ES6学习笔记(一)【变量,字符串】

简介

JavaScript 的类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。

变量则是他们的载体

在 ES6 以前,声明一个变量只有两种方式 —— varfunction

ES6 新增四种声明变量指令 letconstimportclass,这里只介绍前两种,后两种将在后面章节中说明

注意:本书只讨论思路,不探讨细节,如想了解关于ES6变量的全部知识点,请Google查阅相关文档。

正文

letconst命令的用法类似于var,但是所声明的变量,只在声明所在的块级作用域内有效。

{
  let a = 1
  const b = 2
  var c = 3
}

a // ReferenceError: a is not defined.
b // ReferenceError: b is not defined.
c // 3

在ES6以前,由于存在变量提升,var定义的变量可以在声明之前就调用而不报错,而letconst必须先声明后使用

并且let不允许重复声明,const一旦声明,值就不能改变。

let a = 1
let a = 2
// Uncaught SyntaxError: Identifier 'a' has already been declared
const YEAR = 2017
YEAR = 2018
// TypeError: Assignment to constant variable.

思考

这部分内容希望你都可以手动敲一遍,独立思考

for (var i = 0; i < 10; i++) {}
console.log(i)

把上面for循环中的var换成let会有什么不同?为什么会这样?


const foo = {}

// 为 foo 添加一个属性,会成功吗?
foo.prop = 123

// 将 foo 指向另一个对象,会成功吗?
foo = {}

如何解释上面的现象呢?


知道什么是变量提升吗?不知道的话,不如Google搜索一下看看


字符串

简介

ES6 字符串相关的知识点最重要的是模版字符串,然后是一些不常用的新增API

ES6 还加强了对 Unicode 编码的支持,但是这几乎在日常工作中用不到,这里不做说明

正文

在ES6以前,字符串用单引号或者双引号包裹,这种字符串最大的缺点是不能换行,书写时换行会报错

let str = "aaa
          aaa"

// Uncaught SyntaxError: Invalid or unexpected token

在ES6中,新增了一种字符串表示方式,用反引号 ` (键盘上数字1左侧的按键)包裹,允许插入变量或简单的JavaScript表达式,也允许换行书写

let str =`aaa
          bbb
          ccc`
let x = 1;
let y = 2;

// $后面的花括号里的字符串会被js解析器认为是JavaScript语句
`${x} + ${y} = ${x + y}`
// "1 + 2 = 3"

`${x} + ${y * 2} = ${x + y * 2}`
// "1 + 4 = 5"

let obj = {x: 1, y: 2};
`${obj.x + obj.y}`
// 3

ES6为字符串添加了遍历器接口(遍历器接口会在后面章节详细介绍),使字符串可以被for...of循环遍历。

for (let x of 'foo') {
  console.log(x)
}
// "f"
// "o"
// "o"

ES6对字符串的扩展功能不止远这些,但是99%的时候我们用到的只有这些

思考

这部分内容希望你都可以手动敲一遍,独立思考

在ES6以前我们如果想换行书写字符串应该怎么做?


`${if(true){console.log(1)}}`
// 这样写可行吗?

如果想在模版字符串内执行判断语句应该怎么做?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值