ES6的一些笔记(一)

变量的声明关键字


varletswift很像,但是考虑到语言先后的时间swift是在模仿js,在swift语言中可以根据编译器自动判断变量的数据类型,而在js中也完全不用管数据类型,直接使用就好。

var:

varjs的语法的ES5规范中并没有块级作用域的说法,这一点有区别于其他语言,所以在一段代码中如果声明了var变量那么这个变量就是全局的在if...else的判断{}中与for循环中var所声明的变量也是全局的。

var的变量提升,在js的语言中因为变量和函数的变量提升,所以可以先调用,后声明如下:

 // 这个时候输出的是undefined,表示的是一个未初始化的空值,在其他语言中有可能就直接找不到这个变量而报错了。
  console.log(a); 
  var a = 20;

但是在其他部分语言中是不可以先使用后声明的包括ES6中新声明的let也不可以所以不建议利用变量提升的写法,尽量先声明在使用。

var声明的变量属于全局变量,会挂载到window上。

let:

let关键字是ES6中新出现的,在swiftvar是变量而let是常量。

jslet在一段代码中只可以出现一次,而所谓的一段代码就是一个{},在一个{}let一旦出现,它所声明的变量就只可以有一份,不允许变量提升,也不可以重复声明(形参同变量名也不可以),并且在{}作用域消失后,let的变量释放,即外部作用域不可以访问内部作用域的值。

let声明的变量属于局部变量,不会挂载到window上。

const:

第一次接触const是在C语言中,JSconst用法与C基本相同。
const作用是修饰的变量值本身不可以被改变,值得注意的是变量中如果储存的是复杂数据类型如对象,那么变量本身所储存的是变量的地址,地址不可以改变但是地址内所储存的数据挂载的属性是可以改变的。代码如下:

 const a = "张三";
a = "李四";   // 这个时候 会报错 因为a的值不可以修改.

const obj = new Object();
obj.name = "object";  // 可以修改 因为const所修饰变量obj本身的地址没有改变

const基本与let使用方式相同。

总结:

var当需要用到全局变量的时候使用。
let需要局部变量的时候使用。
const定义一个值不允许改变的时候使用。
在代码块中尽可能的使用let,变量与函数尽可能的先声明在调用。

你可能感兴趣的:(ES6的一些笔记(一))