变量是内存中的命名空间,用于存储值。 变量的名称也称为标识符。 命名变量(标识符)时应牢记一些规则。 这些规则如下:
$
)符号和下划线(_
)外,标识符不包含空格和特殊字符。变量初始化是将值存储在变量中的过程,可以在使用变量之前随时对其进行初始化。
ES6语法使用关键字var
声明变量。 在ES5中,这样声明变量:
var x // 通过使用 var 关键字声明变量
某些有效的变量声明,如下:
var $example1=value var example1=value var _example$=value
在ES6中,变量通过以下方式声明:
let
;const
;let:
使用let
关键字声明的任何变量都被分配了块作用域。块作用域不过是声明let
变量的部分,无论该变量是函数{}
,块{}
还是全局(脚本)。
例如:var v/s let
通过使用var
var x = 100; var x=200; console.log(x);
代码成功执行后,将获得以下输出:
200
尝试使用let
关键字重新编写以上代码:
通过使用let
let x = 100; let x=200; console.log(x);
代码成功执行后,将获得以下输出:
SyntaxError: Identifier 'x' has already been declared
成功执行代码后,将得到一个错误,说明标识符x
已被声明。 因此,将使用let
关键字声明的任何变量分配给块作用域。
const:
ES6提供了一种使用const
关键字声明常量的新方法。关键字const
创建对该值的只读引用。const
一些属性如下:
特性:
例如:
const y=100 y=200 // It will result in an error
因为常量变量是不可变的并且不能为它重新赋值,所以它将引发错误。
JavaScript中有两个作用域,它们是全局和局部的:
示例:
下面的示例描述了全局和本地范围:
在此示例中,有两个变量,一个在函数外部(全局范围),另一个在函数外部(局部范围)。
var $var12 = 200; function example() { var $var12 = 300; console.log("Inside example() function = " + $var12); } console.log("Outside example() function = " + $var12); example();
代码成功执行后,将获得以下输出:
Outside example() function = 200 Inside example() function = 300
JavaScript支持动态类型的概念,类似于python,perl,ruby等。它是一项功能,无需告诉JavaScript变量将持有哪种类型的值。 如果在程序执行期间更改了变量的值类型,则会触发该变量,JavaScript会自动进行处理。
吊装是JavaScript的默认行为,它将所有声明移到当前脚本,当前函数或当前作用域的顶部。它允许在声明变量之前使用变量。 JavaScript仅吊装变量声明,而不吊装变量初始化。
例如:
JavaScript的声明吊装
x=10; console.log(x); var x;
上面的代码不会给出声明错误,而是可以成功执行并显示所需的输出。 这是由于吊装概念而发生的。看看代码处于编译阶段时会发生什么。
当以上代码处于编译阶段时,它将被视为:
在编译阶段
var x; // 变量的声明将移到最前面。 x=10; console.log(x);
代码成功执行后,将获得以下输出:
10
1.在使用变量之前初始化变量
var x=100; var y=200; console.log(x+" "+y);
在编译阶段
var x; var y; x=100; y=200; console.log(x+" "+y);
代码成功执行后,将获得以下输出:
var x=100; console.log(x+" "+y); var y=200;
使用后初始化变量时,看看当此代码处于编译阶段时会发生什么。
编译此代码时,将按以下方式处理:
在编译阶段
var x; var y; x=100; console.log(x+" "+y); y=200;
执行此代码时,将得到以下输出,其中y
的值未定义。
100 undefined
发生这种情况是因为如果使用后进行初始化,则吊装不允许在顶部移动变量的初始化。