MaximPro Asked:2020-05-26 22:54:13 +0000 UTC2020-05-26 22:54:13 +0000 UTC 2020-05-26 22:54:13 +0000 UTC 语法...in 772 我在 Internet 上阅读了一个资源的教程,并注意到: for (item in items)无异于for (var item in items) 代码在这两种情况下都没有错误,那么有什么意义呢?这些语法有区别吗?如果有,请告诉我什么? javascript 2 个回答 Voted Best Answer user176262 2020-05-26T23:03:41Z2020-05-26T23:03:41Z 对先前未声明的变量(不是严格的)的任何赋值都会将该变量创建为全局变量。 function WithVar(items) { var prostoPermennaja1 = 123; for (var item1 in items) { //console.log(item1); } } function WithoutVar(items) { prostoPermennaja2 = 123; for (item2 in items) { //console.log(item2); } } var items = {a:1, b:2}; WithVar(items); console.log(window.item1); console.log(window.prostoPermennaja1); WithoutVar(items); console.log(window.item2); console.log(window.prostoPermennaja2); use strict正如@AliaksandrPitkevich 指出的那样,并限制为 。 Aliaksandr Pitkevich 2020-05-26T23:10:34Z2020-05-26T23:10:34Z 如果您依赖具有“使用严格”支持的新标准,则不在任何地方声明变量都是错误的。现在,在所有普通公司中,这就是他们编写代码的方式。总的来说,如果您使用var未通过“严格模式”声明的变量,则会出现错误,即 尝试不执行代码时'use strict': let obj = { 'qwe': 1, 'asd': 2 } for (i in obj) { console.log(obj[i]); } 不会有错误,工作时也一样'use strict': 'use strict' let obj = { 'qwe': 1, 'asd': 2 } for (i in obj) { console.log(obj[i]); } 结论,我们总是声明变量,不用担心)
对先前未声明的变量(不是严格的)的任何赋值都会将该变量创建为全局变量。
use strict
正如@AliaksandrPitkevich 指出的那样,并限制为 。如果您依赖具有“使用严格”支持的新标准,则不在任何地方声明变量都是错误的。现在,在所有普通公司中,这就是他们编写代码的方式。总的来说,如果您使用
var
未通过“严格模式”声明的变量,则会出现错误,即 尝试不执行代码时'use strict'
:不会有错误,工作时也一样
'use strict'
:结论,我们总是声明变量,不用担心)