扫码关注官方订阅号
今天见到老师,这样用。问他也没说明白。虽然不报错,但是感觉很奇怪?
这种写法叫隐式全局变量,自动声明添加var 为全局变量,一般情况最好不要采用,如果代码量多的情况下,指不定会给你出现错误,到时候你找都找不到
会导致全局污染?
只能说不加var的变量声明是合法的,并且不加var的变量才是正经的全局变量。
严格模式就不行咧
因为是局部代码,可能这些变量在外面已经声明(定义) 过,即它们的左右域包含了这个函数
局部声明,但因为没有加var 关键字作为显式限定,则在一般模式下成为全局变量定义和使用,如果个别变量已经是全局变量了,则直接重新赋值
在严格模式下会报错,提示变量没有声明。
严格来说是要用var的,但是不用他也不会有错,js就是这么松散的语法。不过好像es6中会报个警告。
非严格模式下变量会被添加到全局对象,严格模式下会报ReferenceError
全局污染是肯定的,大项目你这么写,可能导致你写的变量被其他人覆盖哦
不建议你这么写,不用var 声明的是全局变量,用多了会有问题。
"use strict";//开启严格模式 在严格模式下,未声明的变量不能直接使用,会报错。在不使用严格模式的情况下是可以使用的,默认是添加到全局。如果前面已经有地方使用过该变量会被覆盖。建议 最好按规范写,要不然出错的时候排查起来很费力!
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
这种写法叫隐式全局变量,自动声明添加var 为全局变量,一般情况最好不要采用,如果代码量多的情况下,指不定会给你出现错误,到时候你找都找不到
会导致全局污染?
只能说不加var的变量声明是合法的,并且不加var的变量才是正经的全局变量。
严格模式就不行咧
因为是局部代码,可能这些变量在外面已经声明(定义) 过,即它们的左右域包含了这个函数
局部声明,但因为没有加var 关键字作为显式限定,则在一般模式下成为全局变量定义和使用,如果个别变量已经是全局变量了,则直接重新赋值
在严格模式下会报错,提示变量没有声明。
严格来说是要用var的,但是不用他也不会有错,js就是这么松散的语法。不过好像es6中会报个警告。
非严格模式下变量会被添加到全局对象,严格模式下会报ReferenceError
全局污染是肯定的,大项目你这么写,可能导致你写的变量被其他人覆盖哦
不建议你这么写,不用var 声明的是全局变量,用多了会有问题。
"use strict";//开启严格模式 在严格模式下,未声明的变量不能直接使用,会报错。
在不使用严格模式的情况下是可以使用的,默认是添加到全局。如果前面已经有地方使用过该变量会被覆盖。
建议 最好按规范写,要不然出错的时候排查起来很费力!