似乎很愚蠢的问题,但只是好奇。
num = "hello";
alert(num);
为什么这可能我没有在这里初始化 num 变量。
num = "hello";
代替
var num = "hello";
似乎很愚蠢的问题,但只是好奇。
num = "hello";
alert(num);
为什么这可能我没有在这里初始化 num 变量。
num = "hello";
代替
var num = "hello";
var
表示“将此变量范围限定为此函数”而不是“使使用此变量成为可能”。
如果你离开var
,那么它将在函数的下一个范围内使用变量。如果该作用域没有,var yourVar
那么它将继续沿着作用域链上升,直到它变成一个全局对象并悬挂在window
对象上(假设默认对象为 的浏览器或另一个 JS 环境window
)。
(这会在您可能没有使用的严格模式下发生变化。)
如果没有var
关键字,则在全局范围内创建变量(在浏览器中window
)。
如果添加 ,则var
只需将变量分配给当前范围,在大多数情况下,这将是一个函数范围。
一般来说,最好使用函数作用域,以免污染全局作用域并防止多个同名变量之间发生冲突!