【Js】使用小记
==和===的区别
==是值相等比较(会做类型转换后比较),===是严格相等比较(还要比较类型)
- 对于
string,number等基础类型,==和===是有区别的- 不同类型间比较,
==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 - 同类型比较,直接进行“值”比较,两者结果一样
- 不同类型间比较,
- 对于
Array,Object等高级类型,==和===是没有区别的进行“指针地址”比较 - 基础类型与高级类型,
==和===是有区别的- 对于
==,将高级转化为基础类型,进行“值”比较 - 因为类型不同,
===结果为false
- 对于
我的一篇随笔里有记过一个例子,这里再放一下1
20 == '' -> true
0 === '' -> false
没有块级作用域
1 | var data = ''; |
上面的代码浏览器可以运行的,但是Js语法检查的话会报错吧,tips 变量在 test() 内被定义在两个代码块内,但是js没有块级作用域,函数作为Js内的最小作用域,所以 tips 变量这里重复定义了。
记:Js中没有用 var 声明的变量都是全局变量,而且是顶层对象的属性