性能优化

作为最佳实践,我们会关闭body标签前引入JavaScript代码.这样浏览器就会在加载脚本之前解析和显示HTML,有利于提升页面的性能

打印的技巧

let obj = { a: 1, b: 2 };
alert("我是一个弹窗");            // 0
console.log(obj);                 // 1
console.log("obj: " + obj);       // 2
console.log("obj: ", obj);        // 3 
console.dir(obj);                 // 4
console.error("我是一个错误信息");// 5
console.assert(false);            // 6

注意:
0: 弹窗展示内容
1: 这里打印是正常的,对象也可以展开
2: 无法以可视化的形式输出,因为这样打印,对象当做字符串"[object object]"展示,这个和alert是一样的
3: 注意,这里用的是',',对象以可视化的形式输出,这种效果是比较好的一种
4: 这个是专门打印对象的一种方式,比如说dom元素,log打印可能是标签,并没有其他属性,但是这个能打印出对象,并可以展开查看属性情况

5: 这个打印出来的就是一个错误语句
6: 断言打印,当打印内容为true的时候就不会打印,如果为false,就会报错,但是不能终止程序运行

JavaScript的数据类型 (P11)

原始类型:null , undefined , 字符串 , 数 , 布尔值 , Symbol

Symbol是ES6中引入的数据类型,代表着独一无二的值

派生数据类型/对象: JavaScript对象(函数, 数组, 正则表达式)

delete:对象属性的删除操作 (P11)

var myObj = {
    a: 1,
    b: 2
}
console.log(myObj);
delete myObj.a;
console.log(myObj)

相等运算符(== 和 ===)

使用==的时候,不同类型的值也可以被看作相等

(1).具体情况表
类型(x) 类型(y) 结果 说明
null undefined true
undefined null true
字符串 x == toNumber(y) 字符串再比较
字符串 toNumber(x) == y 字符串再比较
布尔值 任意类型 toNumber(x) == y 布尔值再比较
任意类型 布尔值 x == toNumber(y) 布尔值再比较
字符串或数 对象 x == toPrimitive(y) 对象原始值再比较
对象 字符串或数 toPrimitive(x) == y 对象原始值再比较

如果xy的类型相同,JavaScript会用equals方法比较这两个值或对象

toNumbertoPrimitive方法是内部的

(2)toNumber对不同类型的返回值结果
类型 结果
undefined NaN
null null
对应的数值
布尔值 true: 1,false: 0
(3)toPrimitive 对不同类型的返回值结果
类型 结果
对象 如果对象的valueOf方法的结果是原始值,返回原始值,如果对象的toString方法返回的是原始值,就反悔这个值.其他的情况返回同一个错误
(4)思考:为什么if("a")true,但是if("a" == true)却是false

解: 这里if("a"),字符串"a"被隐式转化为了Boolean值(Blooean("a")),但是在与true比较时候,"a"被转为了数字(NaN),而true这个布尔值,转为了1,所以最后比较结果为"NaN == 1",所以为false

使用===的时候,同类型的并且值想等才能相等

这个比较一般都没有什么问题,但是还是有部分注意下

  • NaN === NaN => false
  • {a: 0, b:1} === {a: 0, b: 1} => false
posted on 2020-11-15 13:00  人生之外的路途  阅读(203)  评论(0编辑  收藏  举报