download:SpringBoot+Vue3打造企业级一体化SaaS系统
内容速递
看了本文您能理解到的学问!
在本文中,我们将讨论var,let和const的作用域、用处和变量提升。理解它们的异同,纯熟控制它们的运用。
1、var
在ES6呈现之前,必需运用var声明。但是var声明的变量引出了很多前端的问题。这也是为什么必需要有新的办法来声明变量。
1.1、var的作用域
在JavaScript中,var关键字声明的变量是函数作用域或全局作用域的变量,它的作用域在声明的函数内部或全局范围内。假如在函数外部运用var声明变量,则该变量会成为全局变量。
在函数作用域中,var声明的变量只在声明的函数内部有效,函数内部的变量不会影响函数外部的变量。假如在函数内部重新声明一个同名变量,将会掩盖函数外部的同名变量。
例如:
var x = 1;
function test() {
var x = 2;
console.log(x); // 输出2
}
test();
console.log(x); // 输出1
以上代码中,x是全局变量,在test函数内部重新声明了一个同名变量x,该变量只在test函数内部有效,不会影响函数外部的变量x。
假如在函数内部没有运用var关键字声明变量,而直接运用变量名赋值,相当于在全局作用域中创立了一个变量。
例如:
function test() {
x = 1;
}
test();
console.log(x); // 输出1
以上代码中,在test函数内部没有运用var关键字声明变量x,而直接给x赋值。这相当于在全局作用域中创立了一个变量x,能够在函数外部访问到该变量。
需求留意的是,运用
var关键字声明变量时,假如没有运用var关键字直接给变量赋值,会创立一个全局变量,这是一个常见的错误,应该防止。为了防止这种错误,能够运用"use strict"严厉形式。在严厉形式下,假如没有运用var关键字声明变量,JavaScript会抛出ReferenceError异常。
例如:
"use strict";
function test() {
x = 1; // 抛出ReferenceError异常
}
test();
console.log(x);
1.2、var变量能够重新声明和修正
在JavaScript中,运用var关键字声明的变量是能够重新声明和修正的。这是由于var关键字声明的变量是函数作用域或全局作用域的变量,它的作用域在声明的函数内部或全局范围内。
在同一个作用域内,假如运用var关键字重新声明一个曾经存在的变量,不会报错,而是会掩盖之前的变量声明。