分享更有价值
被信任是一种快乐

es6变量定义的方法有哪些

文章页正文上

本篇内容介绍了“es6变量定义的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! es6的6种变量定义方法:1、用关键字var定义变量,语法“var 变量名=值;”;2、用关键字function定义变量;3、用关键字const定义变量,语法“const 变量名=值;”;4、用关键字let定义变量,语法“let 变量名=值;”;5、用关键字import定义变量;6、用关键字class定义变量。es5只提供了两种声明变量的方法,即var和function。
ES6 除了添加let和const命令,还有两种声明变量的方法:import命令和class命令。所以,ES6 一共有 6 种声明变量的方法,即var / function / let / const / import / class(1) var命令

vara;  //undefined
varb=1;

var 声明的变量作用域是全局的或者是函数级的。var定义的变量可以修改,如果不初始化会输出undefined,不会报错。var声明的变量在window上,用let或者const去声明变量,这个变量不会被放到window上。很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function(也可以说用大括号‘{ }’)来划分作用域,但大括号“{ }”却限定不了var的作用域,因此用var声明的变量具有变量提升的效果。(2)function命令

functionadd(a){
  varsum=a+1;
  returnsum;
}

声明了一个名为 add的新变量,并为其分配了一个函数定义。{ }之间的内容被分配给了 add。函数内部的代码在声明是不会被立即执行,只是存储在变量中以备将来使用。(3) cosnt命令

consta;//报错,必须初始化
constb=1;
b=2;//报错,TypeError:Assignmenttoconstantvariable.

const定义一个常量,且必须初始化。const关键字声明的常量的指针不能发生改变。这里说的是常量的指针不能发生改变,但指针所指向的内存空间的值是可以发生变化的。
例如:

constobj={};
obj.n=123;
obj;//{n:123}
obj={x:1};//TypeError:Assignmenttoconstantvariable.

const声明了一个名为obj的对象,obj指针指向一个对象,在对象中添加属性,是在该对象的数据里添加数据,而没有改变obj中存放的指向该对象的地址,所以是可以执行成功的,而对obj重新赋值的操作则改变了obj的指针指向,故而操作失败,抛出错误。
对于基本类型也是同样,因为基本类型的数据直接就存放在栈中,常量名直接指向这个地址上的数据,一旦改变值,就会导致指针地址发生改变,所以造成了无法改变值的假象。该变量是个全局变量,或者是模块内的全局变量,拥有块级作用域。如果一个变量只有在声明时才被赋值一次,永远不会在其它的代码行里被重新赋值,那么应该使用const,但是该变量的初始值有可能在未来会被调整(常变量)。const定义的变量,一般在require一个模块的时候用或者定义一些全局常量。常量不能和它所在作用域内其它变量或者函数拥有相同名称。(4) let命令需要”javascript 严格模式”:‘use strict’;—-不存在变量提升

console.log(a);//ReferenceError:aisnotdefined
leta="apple";

console.log(b);//undefined
varb="banana";

变量 b 用 var 声明存在变量提升,所以当脚本开始运行的时候,b 已经存在了,但是还没有赋值,所以会输出 undefined。
变量 a用 let 声明不存在变量提升,在声明变量 a 之前,a 不存在,所以会报错。不允许重免费云主机、域名复声明

leta=1;
leta=2;
varb=3;
varb=4;
a//Identifier'a'hasalreadybeendeclared
b//4

let只能声明一次,var可以声明多次块级作用域(即只在一个{ }中有效)

{
leta=0;
a//0
}
a//报错ReferenceError:aisnotdefined

函数内部使用let定义后,对函数外部无影响可以在声明变量时为变量赋值,默认值为undefined,也可以稍后在脚本中给变量赋值,在声明前无法使用(暂时死区)

leta;
console.log(a);//undefined
console.log(b);//ReferenceError:bisnotdefined
letb=1;
a=2;
console.log(a);//2

注意:ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量 PI 之前使用它会报错。

varPI="a";
if(true){
console.log(PI);//ReferenceError:PIisnotdefined
constPI="3.1415926";
}

(5) import命令import用于加载文件,在大括号接收的是一个或多个变量名,这些变量名需要与你想要导入的变量名相同。举个栗子:你想要导入action.js文件中的某一个变量,这个变量里保存了一段代码块,所以你要写成:import { Button } from 'action',这个时候,你就从action.js中获取到了一个叫 Button 的变量,既然获取到了,你就可以对Button里的代码猥琐欲为了如果想为输入的变量重新取一个名字,import命令要使用as关键字,将输入的变量重命名,比如:

import{NewButtonasButton}from'action.js';

上面的代码表示从action.js文件中,获取一个变量名称叫做Button的代码段,然后你又声明了一个变量 NewButton ,将 Button 保存在 NewButton(6) class命令在es5中我们是使用构造函数实例化出来一个对象,那么构造函数与普通的函数有什么区别呢?其实没有区别,无非就是函数名称用首字母大写来加以区分,这个不用对说对es5有了解的朋友都应该知道。
但是es5的这种方式给人的感觉还是不够严谨,于是在es6中就换成了class,就是把es5中的function换成了class,有这个单词就代表是个构造函数,然后呢对象还是new出来的,这一点并没有变化。类的使用从里面的代码我们可以看到除了function变成了class以外,其它的跟es5一样

classCoder{
name(val){
console.log(val);
}}
letshuang=newCoder;shuang.name('shuang');

类的传参在es6中的对象的属性都是写在constructor里面,方法都是在原型身上。在这里面的代码用constructor约定了两个参数,然后用add()方法把参数相加,这个地方跟以前不太一样,所以需要多注意一下。

classCoder{
name(val){
console.log(val);
returnval;
}

constructor(a,b){
this.a=a;
this.b=b;
}

add(){
returnthis.a+this.b;
}}
letshuang=newCoder(1,2);console.log(shuang.add());

class的继承class的继承就是用extends

classshuangextendsCoder{
}
letshuang=newshuang;shuang.name('Angel爽');

声明一个shuang的新类,用extends继承了Coder,调用里面的name方法,发现也是可以输出的。“es6变量定义的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注云技术网站,小编将为大家输出更多高质量的实用文章!

相关推荐: Node中如何使用async函数

本篇内容介绍了“Node中如何使用async函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!利用 async 函数,你可以把基于 Promise 的异步代码写…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册