阅读 74

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


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐