20230228----重返学习-数组-引用数据类型的转换-基础调试用方法-对象检测-各数据转布尔值及相等运算符-条件语句-循环语句

news/2024/3/29 17:25:14/文章来源:https://blog.csdn.net/seetoyou/article/details/129271235

day-017-seventeen-20230228-数组-引用数据类型的转换-基础调试用方法-对象检测-各数据转布尔值及相等运算符-条件语句-循环语句

数组

  • 字面量表示法

    [数组成员0,数组成员1,数组成员2]
    
  • 用中括号语法来取值

    var ary = [5,6,7]
    console.log("ary[0]--->", ary[0])
    
  • 数组构成

    //下标/索引 0 1 2
    var ary = [1,2,3]//{0:1,1:2,2:3,length:3,[[Prototype]]: Array}
    console.log("ary[0]--->", ary[0])
    
    1. 数组成员 123
    2. length: 数组长度。
      - ary.length-1 表示数组ary最后一项的索引
      - ary[ary.length-1] 表示数组ary最后一项

引用数据类型的转换

  • 对象数组转为布尔值
    • 依旧都为true
    • Boolean({})//true
    • Boolean([])//true
  • 对象转为字符串
    • 都为'[object Object]'
    • String({})//'[object Object]'
    • String({a:1})//'[object Object]'
    • String(String({a:1,b:2}))//'[object Object]'
  • 数组转为字符串
    • 数组里面的每一项都转为字符串,如果有两项及两项以上则用逗号,拼接起来
    • String([])//''
    • String([1])//'1'
    • String([1,2])//'1,2'
    • String([1,true])//'1,true'
    • String([1,null])//'1,'
      • 因为(null).toString()//会报错,所以null转为空字符串了之后与其它元素拼接。
    • String([1,undefined])//'1,'
      • 因为(undefined).toString()//会报错,所以undefined转为空字符串了之后与其它元素拼接。
  • 对象转为数字
    • 都为NaN
      • 先转为字符串,之后用Number()来转化。
        • Number({})//NaN
        • Number({0:1})//NaN
        • Number({a:1})//NaN
  • 数组转为数字
    • 先转为字符串,之后用Number()来转化。
    • Number([])//0
    • Number([1])//1
    • Number([1,2])//NaN

基础调试

  1. console.log()

    • 控制台上打印出多个内容。
      • 控制台想要看见,一般就用这个console.log()
  2. console.dir()

    • 控制台上输出一个对象或者一个值的详细信息
      • 一般用在函数上。
      • console.dir()不可以一次性输出多个值。
  3. alert()

    • 浏览器窗口中弹出一个提示框提示框中输出指定的信息。
      • 只传一个参数,并且里面的参数都会通过toString()转成字符串并展示。
  4. confirm()

    • 浏览器窗口中弹出一个提示框,允许用户选择,并返回一个布尔值
      • 只传一个参数,并且里面的参数都会通过toString()转成字符串并展示。
      • 点击确定,结果是true
      • 点击取消,结果是false
  5. prompt()

    • 浏览器窗口中弹出一个提示框,允许用户输入字符串。
      • 只传一个参数,并且里面的参数都会通过toString()转成字符串并展示。
      • 点击取消,必定得到null
      • 点击确定,都是input输入框里的字符串值

对象检测

  • typeof
    1. 不会细分对象
    2. null为什么也是object
      • typeof会把变量转为二进制000开头就会识别为对象null64位都是0
    3. 结果是字符串,即单引号''包着数据类型
  • instanceof
  • constructor
  • Object.prototype.toString.call()

转布尔值

  • !!变量相当于Boolean(变量)
    !!100;//true
    !!'';//false
    !![];//true

  • !先把后面的值转为字符串,再取反。
    !''//true

  • 加号+的计算规则

    • 数字+数字,正常加。

    • 数字+字符串,直接拼接。

    • 数字+非字符串的基本数据类型,其它类型转number类型再加。

    • 数字+对象对象字符串,拼串。

    • +变量,一个加号强行转number类型

    • 示例:

      • 1+{}//'1[object Object]'
      • {}+1//1左边花括号{}当成了空代码块,实际上就是+11
      • ({})+1//'[object Object]1'左边花括号{}变成了对象{},之后对象{}转成字符串'[object Object]'
      • +1//1 一个加号强行转number类型
      • +true//1 一个加号强行转number类型
      • +{}//NaN 一个加号强行转number类型对象{}转成字符串'[object Object]'字符串'[object Object]'转成NaN
      • +[]//0 一个加号强行转number类型,,空数组[]转成空字符串''空字符串''转成0
      • +[1,2]//NaN 一个加号强行转number类型数组[1,2]转成字符串'1,2'字符串'1,2'转成NaN

JavaScript运行机制

浏览器开辟两块内存

  • Stack栈
    1. 存储基本数据类型
    2. js代码执行
  • Heap堆
    • 存储引用数据类型

赋值三步曲

  1. 创建值
  2. 创建变量
  3. 赋值(连接起来)
  • 原始值类型操作的是引用数据类型操作的是空间地址

条件语句

if语句

括号里的条件最终会是布尔值,如果是true,就会进入并执行。
else里的语句if语句else if语句都不执行的情况下,就会自动执行。
同一语句团里,如果if语句else if语句有一个判断为true,那么就只执行这一语句块余下语句块都会被跳过。

  if(怎么样){//code...}
  if(1>0){console.log("if()里条件对了,执行if语句");//"if()里条件对了,执行if语句"}
  if(4>5){console.log('if()里条件对了,只执行if语句')}else{console.log('if()里条件不对,else语句执行')//'if()里条件不对,else语句执行'}
  //进且必定只进一个。if(1>0){console.log("if()里条件对了,只执行if语句")//"if()里条件对了,只执行if语句"}else if(3>2){console.log("if()里条件错了,else if()里条件对了,执行else if语句")}else{console.log("if()里条件错了,else if()里条件错了,执行else语句")}
  var num = 1if(num){console.log("if()里条件对了,执行if语句");}

switch多向分支

一个变量在不同值情况下的不同操作,我们可以改写为switch case判断

var num = 100
switch (num) {case 50:console.log("case 50--");break;case 100:console.log("case 100--");break;case 150:console.log("case 150--");break;case 200:console.log("case 200--");break;default //=>等价于else,而且最后一个判断结束无需设置breakconsole.log("default语句");
}
  • 变量传进来的值case的值必须全等才会执行
  • 如果case语句执行了,但没遇到break,会一直跳过后方的case值直到后面case语句中有break

==的规则

  1. 原始值类型长得一模一样就相等为true
  2. 对象必须空间地址相同相等为true
  3. 不同数据类型之间,除了对象字符串要转字符串进行比较,其他不同类型都是转number再进行比较。
  4. null==undefined相等为true
  5. nullundefined其他值永远不等
  6. NaN六亲不认,包括自己。var a=NaN;var b=a;console.log(a==b);//false

循环语句

  • while(){}

    • while循环先判断后循环

    • 条件为true,就执行

    • 一定要在循环体改循环条件依赖的变量,否则将会一直循环下去。

      let fang1 = 0;
      while (fang1 < 0) {console.log(fang1, 1);//不执行fang1++;//在`循环体`内`改循环条件依赖的变量`;
      }
      
  • do{}while()

    • do–while循环先循环后判断

    • 不管三七二十一先执行一遍

    • 一定要在循环体改循环条件依赖的变量,否则将会一直循环下去。

      let fang2 = 0;
      do {console.log(fang2, 2);//执行一次fang2++;//在`循环体`内`改循环条件依赖的变量`;
      } while (fang2 < 0);
      
  • for(){}

    for (循环变量; 循环条件; 循环变量变化) {//循环体;
    }
    
    for (var i = 0; i < 3; i++) {console.log(111);console.log(i);//0 1 2
    }
    console.log(i);// 3
    // @1 var i=0
    // @2 i<3 执行 console.log(111);
    // @3 i++  i=1
    // @4 i<3 执行 console.log(111);
    // @5 i++  i=2
    // @6 i<3 执行 console.log(111);
    // @7 i++  i=3
    // @8 i<3 不满足  整个for循环结束
    

进阶参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_75532.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git学习(1)pro git阅读

目录 目录&#xff1a; 1. 起步 2. Git 基础 3. Git 分支 4. 服务器上的 Git 5. 分布式 Git 第一章 1.3 Git是什么 1.6运行git前的配置 该开源图书网站 Git - Book (git-scm.com) 目录&#xff1a; 1. 起步 1.1 关于版本控制1.2 Git 简史1.3 Git 是什么&#xff1f;1…

卡方检验

一、卡方检验假设检验的一种&#xff0c;以实际观测值与期望值之间的偏离程度&#xff0c;解决是服从某个构成比率和是否具有相关性的问题。其偏离程度决定卡方值的大小&#xff0c;卡方值越小&#xff0c;偏差越小&#xff0c;实际值越趋于符合期望值。二、步骤在显著性为α0.…

Malware Dev 01 - 免杀之 PPID Spoofing 原理解析

写在最前 如果你是信息安全爱好者&#xff0c;如果你想考一些证书来提升自己的能力&#xff0c;那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里&#xff1a; https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助&#xff0c;并分享学习和实践过程…

Active Directory管理帮助台

随着组织规模扩大&#xff0c;需要大幅增加Active Directory帮助台指派。随着组织开始在新地点开设办事处&#xff0c;管理员管理所有地点的用户变得极为繁琐。在这样的情况下&#xff0c;帮助台指派需要横跨不同的域以方便多域管理。尝试使用本机AD工具或PowerShell执行帮助台…

守护进程与TCP通讯

目录 一.守护进程 1.1进程组与会画 1.2守护进程 二.创建守护进程 setsid函数&#xff1a; 三. TCP通讯流程 3.1三次握手&#xff1a; 3.2 数据传输的过程 3.3四次挥手 一.守护进程 1.1进程组与会画 进程组&#xff1a;进程组由一个进程或者多个进程组成&#xff0c;每…

springcloud3 Nacos中namespace和group,dataId的联系

一 Namespance和group和dataId的联系 1.1 3者之间的联系 话不多说&#xff0c;上答案&#xff0c;如下图&#xff1a; namespance用于区分部署环境&#xff0c;group和dataId用于逻辑上区分两个目标对象。 二 案例&#xff1a;实现读取注册中心的不同环境下的配置文件 …

如何顺利渡过三月“大考”?ScanV为您献上“通关秘籍”

随着网络安全形势日益复杂、严峻&#xff0c;在重大安全保障事件期间&#xff0c;重要业务系统&#xff0c;尤其是党政机关、国企央企、能源、金融等重要的关基单位更应重视网站及业务系统安全。 临近三月重保季&#xff0c;知道创宇推出“御黑行动-典型案例篇”&#xff0c;以…

王道计算机网络课代表 - 考研计算机 第一章 计算机网络体系结构 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 计算机网络 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 “计算机网络体系结构” 章节知识点总结的十分全面&#xff0c;涵括了《计算机网络…

【大话面试】- Redis 篇-第一篇

【大话面试】- Redis 篇-第一篇 认识 NoSQL SQL VS NoSQL 1️⃣ 结构化&#xff08;Structured&#xff09; SQL 的存储格式 NoSQL 从其存储的结构上来看&#xff0c;对于 SQL 数据库而言&#xff0c;我们可以给每一个表的属性添加不同的约束&#xff08;主键唯一&#xff…

分布式任务处理

分布式任务处理 1. 什么是分布式任务调度 视频上传成功需要对视频的格式进行处理&#xff0c;如何用Java程序对视频进行处理呢&#xff1f;这里有一个关键的需求就是当视频比较多的时候我们如何可以高效处理。 如何去高效处理一批任务呢&#xff1f; 1、多线程 多线程是充…

java易错题锦集系列五

接口中不能有构造方法&#xff0c;抽象类中可以有。抽象类中构造方法作用&#xff1a;初始化抽象类的成员&#xff1b;为继承它的子类使用 定义在同一个包&#xff08;package&#xff09;内的类是可以不经过import而直接相互使用 final修饰的方法可以被重载 但不能被重写 从…

线性插值基本原理推导

线性插值基本原理1. 为什么使用线性插值&#xff1f;2. 单线性插值2.1 单线性插值推导3.多线性插值3.1 多线性插值推导注意事项3.2 多线性插值推导3.3 插入坐标越远权重越大1. 为什么使用线性插值&#xff1f; 在深度学习对图片进行上采样和下采样的时候会应用到线性插值 对图…

TypeScript 使用 ES6 解构骚操作

TypeScript 使用 ES6 解构骚操作 文章目录TypeScript 使用 ES6 解构骚操作一、TypeScript 对象解构二、TypeScript 函数参数解构四、参考资料&#x1f498;五、推荐博文&#x1f357;一、TypeScript 对象解构 我们都知道 ES6 的数据解构功能很强大&#xff0c;一行命令就能够声…

TypeScript 常用知识

「 推荐一个学习 ts 基础的专栏&#xff0c;满满的干货&#xff1a;typeScript 」 1、为什么推荐使用 TypeScript 【】ts 是 js 的超集&#xff0c;包含 js 的所有元素 【】ts 通过对代码进行类型检查&#xff0c;可以帮助我们避免在编写 js 时经常遇到令人痛苦的错误 【】强…

云端IDE系列教程7:解决 WeTTY 在 Ubuntu 非 root 用户不能运行的问题

原文作者&#xff1a;行云创新技术总监 邓冰寒 概述 上一期在使用官方容器镜像快速成功地在 TitanIDE 运行起来了 WeTTY&#xff0c;但是不适合开发人员使用&#xff0c;而我自己编译构建出来的容器镜像无法直接运行指定的应用&#xff08;/bin/bash 或 /bin/zsh&#xff09;&…

GO中sync 包的 RWMutex 读写互斥锁

文章目录背景RWMutex 简介代码验证多个协程请求读锁 RLock() 和 RLock()读写交错 RLock() 和 Lock()写入的时候读取读取的时候写入请求多个写Lock() 和 Lock()背景 Mutex 互斥锁是严格锁定读和写&#xff0c;如果我们需要单独对读或者写添加锁需要使用 sync包的RWMutex 针对读…

PHP使用chilkat入门教程

前言&#xff1a; 我们需要先确认自己的版本&#xff0c;在PHP中&#xff0c;可以利用phpinfo()函数来查看php是ts版本还是nts版本&#xff0c;该方法可以展示出当前phpinfo信息&#xff0c;若“Thread Safety”项的信息是“enabled”&#xff0c;一般来说就表示ts版本&#xf…

备战英语6级——记录复习进度

开始记录—— 学习&#xff1a;如何记录笔记&#xff1f; 1&#xff1a;首先我认为&#xff1a;电脑打字比较适合我&#xff01; 2&#xff1a;先记笔记&#xff0c;再“填笔记”&#xff01; 记笔记就是一个框架&#xff0c;记录一个大概的东西。后面需要在笔记中&#xff0…

实例10:四足机器人运动学逆解可视化与实践

实例10&#xff1a; 四足机器人运动学逆解单腿可视化 实验目的 了解逆运动学的有无解、有无多解情况。了解运动学逆解的求解。熟悉逆运动学中求解的几何法和代数法。熟悉单腿舵机的简单校准。掌握可视化逆向运动学计算结果的方法。 实验要求 拼装一条mini pupper的腿部。运…

Qt 事件机制

【1】事件 事件是可以被控件识别的操作。如按下确定按钮、选择某个单选按钮或复选框。 每种控件有自己可识别的事件&#xff0c;如窗体的加载、单击、双击等事件&#xff0c;编辑框&#xff08;文本框&#xff09;的文本改变事件等等。 事件就是用户对窗口上各种组件的操作。…