JS常见易忘点

一、数据类型相关

(1)在JS中只有“0/NaN/空字符串/null/undefined” 这五个值转换为布尔类型为false,其余转换为布尔类型都是true;

(2)! 作用:先将其它数据类型转换为布尔类型,然后取反;!! 作用:把当前值转换为布尔类型;

(3)null && undefined; 说明:null(空对象指针),一般都是人为手动的先赋值为null,后面的程序中会再次给它赋值;undefined(未定义),一般都是不是人为手动控制的,大部分都是浏览器自主为空(后面可以赋值也可以不赋值);Number(null)  => 0;Number(undefined) => NaN;

  (4) 一个对象中的属性名不仅仅是字符串格式的,还可以是数字格式。当存储的属性名不是字符串也不是数字时,浏览器会把这个值转换为字符串(toString),然后再进行存储。

var obj = {
    name:'小明',
    0:10, // 类似数组[10]
    {}:100, // error  =》 '{}':100, // true
    true:100,// error  =》 'true':100,// true
    null: 10,// error  =》 'null': 10,// true
    undefined:20,// error  =》 'undefined':20,// true
    NaN:30// error
}


obj[{}] = 100 // true
obj[true] = 100 // true
obj[null] = 10 // true
obj[undefined] = 20 // true
obj[NaN] = 30 // true
console.log(obj['name']);
console.log(obj[0]);

(5)数组也是对象。如:

var arry = [1,2];
arry['age'] = 100;
console.log(arry);

(6)在JS中用来检测数据类型的方式:typeof、instanceof、constructor、Object.prototype.toString.call()。

typeof 【value】 =》 检测value的数据类型

返回值:使用typeof检测出来的结果是一个字符串,字符串中包含着对应的数据类型,例如:“number”/"string"/"boolen"/"undefined"/"object"/"function"

typeof null => "object"; // 因为null代表空对象指针(没有指向任何的内存空间)

typeof检测数值/正则/对象,最后返回的都是"object",也就是基于这种方式无法细分对象。

typeof NaN => "number"

    (7)n++和 n = n+1一样吗?

 

var n = '10';
n = n+1;
console.log(n); //101

// 比较

var n = '10';
n++;  
console.log(n); //11

实现自身累计最好使用++

(8)相等比较和绝对比较

'10' == 10  

=》true 相等比较,如果等号左右两边的类型不一样,首先会转换为一样的数据类型,然后再进行比较

‘10’ === 10

=》false  绝对比较,如果两边的数据类型不一样,则直接不相等,它要求类型和值都完全一样才会相等(真实项目中为了保证代码的严谨性,都应该使用绝对比较)

二、JS的运行机制

(1)当浏览器(它的内核\引擎)渲染和解析JS的时候,会提供一个供JS代码运行的环境,我们把这个环境称为“全局作用域(global/window)== 栈内存”

(2)代码自上而下执行(之前还有一个变量提升阶段)

          =》基本数据类型的值会存储在当前作用域下

          var  a = 12;

          1)首先开辟一个空间存储12

          2)在当前作用域中声明一个变量a(var a)

          3)让声明的变量和存储的12进行关联(把存储的12赋值给a=》赋值操作叫做定义)

  基本数据类型(也叫作值类型),是按照值来操作的:把原有的值复制一份,放到新的空间或者位置上,和原来的值没有关系;如:var a =12 ; var b = a; // a和b没有关系,b的值只是a的值的一份拷贝

         =》引用数据类型的值不能直接存储到当前的作用域下(因为可能存储的内容过于复杂),我们需要先开辟一个新的空间,把内容存储到这个空间中

          var obj1 = {n:100};

          1)首先开辟一个新的内存空间,把对象中的键值对依次存储起来(为了保证后面可以找到这个空间,此空间有一个16进制的地址)

          2)声明一个变量

          3)让变量和空间地址关联在一起(定义)

   引用类型不是按照值来操作,它操作的是空间的引用地址:把原来空间的地址赋值给新的变量,但是原来的空间没有被克隆,还是一个空间,这样就会出现多个变量关联的是相同的空间,相互之间就会存在影响了。

          

(3)相关练习

var obj = {
    n : 10,
    m : obj.n * 10
}
console.log(obj.m); //  Uncaught TypeError: Cannot read property 'n' of undefined

1)形成一个全局作用域(栈内存)

2)代码自上而下执行

    1. 首先开辟一个新的堆内存(AAAFFF111),把键值对存储到堆内存中

         n:10

         m:obj.n*10 => obj.n 此时堆内存信息还没有存储完成,空间的地址还没有给obj,此时的obj是undefined

var ary1 = [3,4];
var ary2 = ary1;
ary2[0] = 1;
ary2 = [4,5];
ary2[1] = 2;
ary1[1] = 0;
console.log(ary1,ary2);  // [1,0] [4,2]

三、判断相关

(1)if('3px' + 3){

}

在JS中,+ - * / %都是数学运算符,除 + 以外,其余运算符在运算的时候,如果遇到非数字类型的值,首先会转换成数字类型(Number),然后再进行运算 。

(2)三元运算符

       1)如果三元运算中的某部分不需要做任何处理,我们用null/undefined/void 0...,占位即可

              var num = 12;

              num > 10 ? num++ : null;

       2)如果需要执行多项操作,我们把其用小括号包裹起来,每条操作语句用逗号分隔

              var num = 10;

              num >= 10?(num++,num+=10):null;

    (3) switch case

       switch case 应用于变量(或者表达式等)在不同值情况下的不同操作,每一种case结束后都要加break(结束整个判断)

       switch case中每一种case情况的比较都是基于"==="绝对相等来完成的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值