Typeof的作用: 返回数据的类型
基本数据类型(Number String Boolean null undefined es6种新增的一个基本数据symbol)
Let num = 22
Typeof num //Number
会返回对应的类型
但是有一个例外:null
Let num2 = null
Typeof num2 // Object
对于判断复杂数据类型(函数,对象,数组),都会返回Object
Let arr = [1,2,3]
Typeof arr //object
但是也有一个例外: 函数
Let fn = function() {}
Typeof fn // function
逻辑中断(逻辑短路)
&& 找假值,找到返回假值,后面不执行,没有找到,返回最后一个真值
|| 找真值,找到返回真值,后面不执行,没有找到返回最后一个假值
||经常会被用于1.设置默认值 let width = width || 20
2.兼容问题处理
window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
比较运算符(=== ==)
1.===比较类型也比较值,比较严格
2.== 比较值
规则:1.先看有没有NaN,因为它不等于任何值,包括自己,有返回false
2.再看null和undefined,他们也不等于任何值,除了null和undefined
3.如果有数字和布尔,转化为数字比较
几个特殊的转布尔值: []:0 {}:NaN false:0 true: 1 ‘’:0
4.再看有没有字符串和复杂数据类型,有转换字符串进行比较
5.如果都是复杂数据,比较地址
Js中的值类型和引用类型的理解
值类型:在变量中存储的是值本身
引用类型: 在变量中存储的是内存地址
注意:js里面没有特别明确的堆和栈的概念,而且js的实现,也不需要堆和栈的概念