注意:这个问题是从ECMAScript版本3或5的角度提出的。随着ECMAScript 6版本中新特性的引入,答案可能会过时。
JavaScript中var关键字的功能是什么
var someNumber = 2;
var someFunction = function() { doSomething; }
var someObject = { }
var someObject.someProperty = 5;
and
someNumber = 2;
someFunction = function() { doSomething; }
someObject = { }
someObject.someProperty = 5;
?
你什么时候会使用其中一个,为什么/做什么?
当在浏览器中执行Javascript时,所有代码都被一个with语句包围,如下所示:
with (window) {
//Your code
}
有关-MDN的更多信息
由于var在当前范围内声明了一个变量,所以在窗口内声明var和根本不声明它之间没有区别。
不同的是,当你不直接在窗口内时,例如在函数内或块内。
使用var可以隐藏同名的外部变量。通过这种方式,您可以模拟“私有”变量,但这是另一个主题。
经验法则是始终使用var,否则会有引入细微错误的风险。
编辑:在收到批评之后,我想强调以下几点:
var声明当前范围中的变量全局范围是窗口不使用var在全局范围(窗口)中隐式声明var使用var在全局范围(窗口)中声明变量与省略变量相同。使用var在不同于window的作用域中声明变量与不使用var声明变量不同始终显式声明var,因为这是一种很好的做法
当在浏览器中执行Javascript时,所有代码都被一个with语句包围,如下所示:
with (window) {
//Your code
}
有关-MDN的更多信息
由于var在当前范围内声明了一个变量,所以在窗口内声明var和根本不声明它之间没有区别。
不同的是,当你不直接在窗口内时,例如在函数内或块内。
使用var可以隐藏同名的外部变量。通过这种方式,您可以模拟“私有”变量,但这是另一个主题。
经验法则是始终使用var,否则会有引入细微错误的风险。
编辑:在收到批评之后,我想强调以下几点:
var声明当前范围中的变量全局范围是窗口不使用var在全局范围(窗口)中隐式声明var使用var在全局范围(窗口)中声明变量与省略变量相同。使用var在不同于window的作用域中声明变量与不使用var声明变量不同始终显式声明var,因为这是一种很好的做法