javascript var或not var,有啥区别? [复制]

Posted

技术标签:

【中文标题】javascript var或not var,有啥区别? [复制]【英文标题】:javascript var or not var, what's the difference? [duplicate]javascript var或not var,有什么区别? [复制] 【发布时间】:2011-05-22 02:47:47 【问题描述】:

可能重复:Difference between using var and not using var in javascript

大家好

声明var myVar; 带有var 关键字或声明myVar 没有它。

这对某些人来说可能是个愚蠢的问题,但我正在学习 javascript。

有时,在阅读其他人的代码时,我看到一些变量的声明没有前面的“var”。只是为了强调,这些变量甚至没有被声明为函数的参数。

那么声明变量时带或不带'var'关键字有什么区别呢?

非常感谢

【问题讨论】:

【参考方案1】:

如果你不使用它,它可能是一个全局变量,或者在 IE 的情况下,它会爆炸。

在某些情况下你不需要它,例如,如果它是你所在函数的参数,它已经被声明了。 总是在任何其他情况下使用var(其他情况是:除非您正在操作一个已经存在的变量)。无论需要在什么范围内定义,显式在那里定义。

【讨论】:

【参考方案2】:

这都是关于范围界定的。从技术上讲,你可以省略 var 但考虑一下:

myVar = "stuff";

function foo() 
    myVar = "junk"; //the original myVar outside the function has been changed


function bar() 
    var myVar = "things" //A new scoped myvar has been created internal to the function

【讨论】:

你不能“在技术上忽略它”,一些浏览器允许,这是有区别的。执行此操作时 IE 会崩溃,这是理所当然的。 @Nick fair 评论,我说错了 哦,顺便说一句,我并不是建议你永远忽略 var,我只是说你可以侥幸逃脱。使用 var 使您的代码更易于阅读和调试,养成使用它的习惯。

以上是关于javascript var或not var,有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript - 在 for 循环中使用 let 和 var 关键字声明迭代变量有啥区别? [复制]

有啥理由不放弃“var”吗?

JavaScript中如何使用变量?有啥特殊的语法规则?

“var”和“out”参数有啥区别?

js中var a=new Object()和var a=有啥区别吗?

js中定义变量问题,请问定义变量时有var关键字和没有var关键字有啥差别?