ES6中var,let,const,static的使用(es6面试题)
本文摘要:ES6标准中声明变量var,let,const,static的定义及注意点,并对每个注意点给出相应的示例代码。
0.变量名的要求
变量名可以包含字母,数字,下划线和美元符号;
变量名必须以字母开头;
变量名也可以以$和_开头(但一般不这么用);
变量名是大小写敏感的(y和Y是不同的变量);
保留字(如JavaScript关键字)不能作为变量名使用;
1.var的定义及使用
var是js的一个关键字,它是用来声明变量的,是在当前域中声明变量,支持重复声明。
如果在方法中声明,作用域为这个方法,如下代码块1;
如果是在全局域中声明,作用域则为全局,如下代码块2;
如果在定义前使用此变量,则提示undefined,如下代码块3。
var a1 = 123; function f1(){ console.log(a1); } f1(); //输出结果为123 复制代码
function f2(){ var a2 = 456; console.log(a2); } f2(); //输出456 console.log(a2); //输出ReferenceError: a2 is not defined 复制代码
console.log(a3); //输出undefined var a3; 复制代码
2.let的定义及使用
ES6 新增了let命令,用来声明变量,不支持重复声明。
它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,为块级作用域,如下代码块1;
在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ),如下代码块2;
块级作用域的不同层级之间变量互不影响,如下代码块3。
{ let a4 = 444; } console.log(a4); //输出报错ReferenceError: a4 is not defined 复制代码
{ console.log(a5); //输出报错ReferenceError: a5 is not defined let a5 = 555; console.log(a5); //输出555 } 复制代码
{ let a6 = 666; { let a6 = 777; console.log(a6); //输出为777 } console.log(a6); //输出为666 } 复制代码
3.const定义及使用
和其它语言一样,const声明一个只读的常量。
一旦声明,常量的值就不能改变,如下代码块1;
第一次声明时就得赋值,如下代码块2;
也存在暂时性死区,声明后才可以使用;
作用域为块级作用域,如下代码块3。
const LENGTH = 1024; LENGTH = 2096; //提示报错TypeError: Assignment to constant variable. 复制代码
const HEIGHT; //提示报错SyntaxError: Missing initializer in const declaration 复制代码
{ const WIDTH = 123; } //console.log(WIDTH); //输出报错ReferenceError: WIDTH is not defined 复制代码
4.static的定义及使用
static主要用在类的定义当中,static声明的变量为类属性,可以通过类名.属性名获取到,static声明的方法为类方法,可以通过类名.方法名()直接调用,示例代码如下:
class Desk{ static count = 0; static sayno(){ console.log("调用方法sayno()"); } } console.log(Desk.count); //输出为0 Desk.sayno(); //输出为调用方法sayno() 复制代码
上述所有代码环境为nodejs。
作者:用户7709854714023
链接:https://juejin.cn/post/7028767207794753544