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