可以使用或不使用 var
关键字来声明 JavaScript 变量。
var a = 100; // this works!
b = 200; // and this does too!
也可以在不初始化的情况下声明变量。
var c; // this is just as acceptable!
但是为什么对于没有 var 的变量来说,在没有初始化的情况下声明是不正确的。
var c;
d; // causes a reference error to occur!
为什么?
最佳答案
首先,您看到的是遗留行为。传统上,对未声明符号的赋值隐含地意味着应创建(声明)全局符号并将其设置为给定值。因此
x = 1;
当x
尚未声明时,被视为全局符号的隐式实例化。
提及未声明的符号,如下所示:
x;
是一个错误,因为该符号未声明。
在现代 JavaScript 中,当“严格”模式由于以下原因而生效时
"use strict";
声明(或者由于其他影响,可能是 Node.js 代码的情况),全局符号的隐式创建也是错误的。
通常,隐式全局符号实例化被认为是一个坏主意。浏览器 JavaScript 中的全局符号存在很大问题,因为全局命名空间受到严重污染。值得庆幸的是,可以轻松地将代码包装在函数作用域中,为符号创建“安全空间”,而不必担心浏览器强加奇怪的全局名称。
关于javascript - JS : Why are variables allowed to be declared both with and without the `var` keyword. ..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47687115/