有没有var声明的区别,以及严格模式,==和===
有没有var声明的区别
带var的是声明变量
var x = 1;
delete x;
console.log(x); //1
不带var的默认是赋值
- 它会尝试在当前作用域链中解析x; 如果找到x,则会执行对x属性赋值
- 如果没有找到x,它才会在全局对象中创造num属性并赋值。
x = 1;
delete x;
console.log(x); //报错:Uncaught ReferenceError: num1 is not defined
----注意!它并不是声明了一个全局变量,而是创建了一个全局对象的属性----
解释:JS的变量声明、创建属性以及每个Javascript中的每个属性都有一定的标志说明它们的属性----如只读(ReadOnly)不可枚举(DontEnum)不可删除(DontDelete)等等。
即带var的不可删除,不带的可以删除
严格模式
ES5的严格模式旨在于消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
比如必须使用var声明
<script>
"use strict"
more code...
</script>
==和===的区别
(markdown 等于号转义字符是:=)
==是先转换成相同的类型再比较
===是直接比较,类型不同直接false
1 == '1'; //true
1 === '1'; //false

浙公网安备 33010602011771号