ES6 变量



ES6 变量

ES6 变量

变量是内存中的命名空间,用于存储值。变量的名称称为标识符。 命名标识符时应牢记一些规则。这些规则如下:

它可以包含数字和字母。
变量名不能以数字开头。
关键字不能用作变量名。
标识符不包含空格和特殊字符,除了美元($) 符号和下划线(_)。

变量的初始化

是将值存入变量的过程。变量可以在使用前随时初始化。
ES6 语法使用关键字 var 声明一个变量。在 ES5 中,我们像这样声明变量:
var x //Declaration of a variable by using the var keyword 

变量声明的有效语法类型

一些被认为有效的变量声明如下:
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

输出:
TypeError: Assignment to constant variable.

会抛出错误,因为常量变量是不可变的,不能重新赋值。

JavaScript 变量作用域

中有两个作用域JavaScript,它们是全局和本地

全局作用域: 在全局作用域中,可以从 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 动态打字

JavaScript 支持动态打字的概念,类似于python、perl、ruby 等。这是一项功能,您无需告诉 JavaScript 变量将保存什么类型的值。如果在程序执行过程中变量的值类型发生了变化,那么它就会被触发,JavaScript 会自动处理它。

ES6 和变量提升

提升是 JavaScript 的默认行为,用于将所有声明移动到当前脚本、当前函数或当前作用域的顶部。它允许您在声明之前使用变量。 JavaScript 只提升变量声明,而不是变量初始化。
例如:
JavaScript 声明被提升
x=10;
console.log(x);
var x;

上面的代码将成功执行并显示所需的输出,而不是给出声明错误。它的发生是因为提升概念。让我们看看当代码处于编译阶段时会发生什么。
当上面的代码处于编译阶段时,那么它将被视为:
In Compile阶段
var x; // declaration of the variable will move on top.
x=10;
console.log(x);

输出:
10

JavaScript 初始化不会被提升

1.使用前初始化变量时
var x=100;
var y=200;
console.log(x+"  "+y);

编译阶段
var x;
var y;
x=100;
y=200;
console.log(x+"  "+y);

输出:
100  200

二。使用后初始化变量时
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

发生这种情况是因为如果在使用后初始化变量,提升不允许我们将变量的初始化移动到顶部。