===和==的区别
=== 三个等成为全等,当等号两边的值为相同类型的时候,直接比较等号两边的值值相同就返回true,若等号两边值不相同则直接返回false,所以三个等号既比较类型也比较值
=== 两个等号为等值符当等号两边的值为相同类型是比较值是否相同,类型不同是会发生类型的自动转换,转回为相同类型后再做比较,也就是说两个等号只比较值
null和undefined的区别
null表示一个对象被定义了,值为空值(说人话就是你买了一套房钱交了房子钥匙也拿到了但是房子还没有装修)
undefined表示这个值不存在(说人话就是买了一套房子钱交了但是房子还没有建起来)
注意点验证null时一定要使用===,因为==无法分别null和undefined,undefined表示缺少值,就是此处阴沟有一个值但是还没有定义
典型用法
undefined用法
-
变量声明了,但是没有赋值时,就等于undefined
-
调用函数时,应该提供的参数没有提供,该参数等于undefined
-
对象没有赋值的属性,该属性的值为undefined
-
函数没有返回值时,默认返回undefined
-
函数没有返回值时,默认返回undefined
null的用法
null表示没有对象,即该处不应该有值
-
作为函数的参数,表示该函数的参数不是对象
-
作为对象原型链的终点
js中什么情况下会返回undefined
1.访问声明,但是没有初始化的变量
var aaa
console.log(aaa)//undefined
2.访问不存在的属性
var aaa={}
console.log(aaa,c)
3.访问函数的参数没有被显示的传递值
(function (b){
console.log(b)//undefined
})
4.访问人和被设置为undefined值的变量
var aaa=undefined
console.log(aaa)
5.没有定义return的函数隐式返回
function aaa{} console.log(aaa())//undefined
6.函数retrun没有显示的返回任何内容
function aaa(){
retrun
}
console.log(aaa())//undefined
桂冠上的飘带,并非由天才的纤维缠绕而成,而是由痛苦,艰难的丝线纺织而成。