ES6 变量
根据定义,变量是存储值的“存储器中的命名空间”。换句话说,它充当程序中的值的容器。变量名称称为标识符。以下是标识符的命名规则
- 标识符不能是关键字。
- 标识符可以包含字母和数字。
- 标识符不能包含空格和特殊字符,但下划线(
_
)和美元($
)符号除外。 - 变量名称不能以数字开头。
类型语法
变量必须在使用前声明。ES5语法使用var
关键字来实现相同。用于声明变量的ES5语法如下。
//Declaration using var keyword var variable_name
ES6引入了以下变量声明语法
- 使用
let
。 - 使用
const
。
变量初始化是指在变量中存储值的过程。变量可以在声明时或稍后时间初始化。
用于声明和初始化变量的传统ES5类型语法如下 -
//Declaration using var keyword var variable_name = value
示例:使用变量
var name = "享学课堂" console.log("The value in the variable is: "+name)
上面的例子声明一个变量并打印它的值。
成功执行时会显示以下输出。
The value in the variable is 享学课堂
JavaScript和动态类型
JavaScript是一种无类型的语言。这意味着JavaScript变量可以保存任何数据类型的值。与许多其他语言不同,在变量声明期间,您不必告诉JavaScript变量将保存哪种类型的值。变量的值类型可以在执行程序期间更改,JavaScript会自动处理它。这个功能被称为动态类型。
JavaScript变量范围
变量的范围是您定义程序的区域。传统上,JavaScript只定义了两个范围 - 全局和本地。
- 全局范围 - 全局范围的变量可以从JavaScript代码的任何部分访问。
- 本地范围 - 可以从声明的函数内访问具有本地范围的变量。
示例:全局与局部变量
下面的示例通过名称num来声明两个变量 - 一个在函数外(全局范围),另一个在函数内(局部范围)。
var num = 10 function test() { var num = 100 console.log("value of num in test() "+num) } console.log("value of num outside test() "+num) test()
函数内引用的变量显示本地作用域变量的值。但是,在函数外部访问时的变量num将返回全局范围的实例。
成功执行时会显示以下输出。
value of num outside test() 10 value of num in test() 100
ES6定义了一个新的变量作用域 - 块范围。
Let和Block范围
块范围限制变量对声明块的访问权限。var关键字将一个函数作用域分配给变量。与var关键字不同,let关键字允许脚本将对变量的访问限制在最近的封闭块中。
"use strict" function test() { var num = 100 console.log("value of num in test() "+num) { console.log("Inner Block begins") let num = 200 console.log("value of num : "+num) } } test()
该脚本在函数的本地范围内声明变量num,并使用let关键字在块内重新声明它。当在内部块外部访问变量时,打印本地范围变量的值,而在内部块内引用块范围变量。
注 - 严格模式是一种加入JavaScript的受限变体的方法。成功执行时会显示以下输出。
value of num in test() 100 Inner Block begins value of num : 200
例如:let vs var
var no = 10; var no = 20; console.log(no);
在成功执行上述代码时,会显示以下输出。
20
让我们用let关键字重新编写相同的代码。
let no = 10; let no = 20; console.log(no);
上面的代码会抛出一个错误:标识符'no'已经被声明。任何使用let关键字声明的变量都会被赋予块范围。
常量
const声明为一个值创建一个只读引用。这并不意味着它所拥有的价值是不可变的,只是变量标识符不能被重新分配。常量是块范围的,就像使用let语句定义的变量一样。常量的值不能通过重新赋值而改变,并且不能重新声明。
以下规则适用于使用const关键字声明的变量 -
- 常量不能被重新赋值。
- 常数不能重新声明。
- 一个常量需要一个初始化器。这意味着常量必须在声明期间被初始化。
- 分配给const变量的值是不可变的。
示例
const x = 10 x = 12 // will result in an error!!
上面的代码将返回一个错误,因为常量不能被重新赋值。常量变量是不可变的。
ES6和变量提升
用var声明的变量的范围是其当前的执行上下文,它是封闭函数,或者对于在任何函数外声明的变量,全局函数。变量提升允许在JavaScript程序中使用变量,甚至在声明之前。
以下示例更好地解释了这个概念。
示例:变量提升
var main = function() { for(var x = 0;x<5;x++) { console.log(x); } console.log("x can be accessed outside the block scope x value is :"+x); console.log('x is hoisted to the function scope'); } main();
在成功执行上述代码时,会显示以下输出。
0 1 2 3 4 x can be accessed outside the block scope x value is :5 x is hoisted to the function scope
JavaScript引擎在内部将脚本表示为 -
var main = function() { var x; // x is hoisted to function scope for( x = 0;x<5;x++) { console.log(x); } console.log("x can be accessed outside the block scope x value is :"+x); console.log('x is hoisted to the function scope'); } main();
注 - 提升的概念适用于变量声明,但不适用于变量初始化。建议始终在其作用域顶部(全局代码顶部和功能代码顶部)声明变量,以使代码能够解析变量的作用域。
下一章:ES6 操作符
表达式是一种特殊的语句,它可以评估一个值。每个表达都是由 -操作数 - 表示数据。运算符 - 定义操作数如何处理以产生值。考虑以下表达式-2 + 3.在表达式中,2和3是操作数,符号+(加号)是运算符。JavaScript支 ...