其他分享
首页 > 其他分享> > js中六种声明变量的方式

js中六种声明变量的方式

作者:互联网

var 在ES5阶段中,使用var具有以下特点: (1)没有块的概念,可以跨块访问,不能夸函数访问; (2)存在变量提升,赋值不提升 (undefined)  let 在ES6阶段新增,新增出块的概念,新增块级作用域,具有以下特点: (1)let声明的变量只在它所在的代码块有效; (2)let不会出现变量提升,需先声明后使用,否则会报错; (3)暂存性死区,在代码块内,使用let使用变量之前,该变量都是不可用的; (4)不允许重复声明 const 用于声明一个只读的常量,具有以下特点: (1)一旦声明就必须立即初始化; (2)一旦声明,常量值就不能改变(指的是内存地址不能改变,但指向的数据结构不受控制;通过 Object.freeze() 方法,使对象的原始属性不可变, 但仍然可以更改嵌套对象); (3)块作用域内有效; (4)不存在变量提升; (5)存在暂时性死区;  function 用于定义一个函数,具有以下特点: (1)函数声明后 需要调用的时候 才能执行; (2)对支持ES5和ES6的浏览器环境在块作用域内有一定区别,所以应避免在块级作用域内声明函数。  class ES6引入了class关键字,用来定义类。该写法相比于对象原型的 方式具有以下特点: (1)相比于对象原型的方式写法更清晰; (2)更像面向对象编程的语法(方便) ```JavaScript     class Calculate {     constructor(x, y) {       this.x = x;       this.y = y;     }       add() {       return this.x + this.y;     }   } ```  import 用于加载模块,然后输出变量,具有以下特点: (1)import 命令接受一对大括号,其里面的变量名必须与被导入的模块对外接口的名称相同; (2)用 as 关键字可将输入的变量名重命名; (3)import 命令输入的变量都是只读的; (4)import 命令具有提升效果,会提升到整个模块的头部,首先执行(因为import命令实在编译阶段执行的,在代码运行之前); (5)import  是静态执行,不能使用表达式和变量; (6)import 会执行所加载的模块

标签:ES6,变量,六种,js,作用域,let,import,声明
来源: https://www.cnblogs.com/bluebones/p/16060556.html