有没有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 等于号转义字符是:&#61;)
==是先转换成相同的类型再比较
===是直接比较,类型不同直接false

1 == '1';  //true
1 === '1';  //false
posted @ 2021-05-31 13:59  巴伐利亚药水哥  阅读(101)  评论(0)    收藏  举报