ES6新语法之let和const、Symbol、字符串新方法

目录

1.let和const

相同点

不同点

2.Symbol

3.字符串新方法


1.let和const

constlet
变量提升(必须先声明才能赋值)
块作用域(只在当前方法作用域中可用)
声明同名变量(多次声明同一个变量)
区别声明常量,且必须有初始值用于声明变量,可以无初始值
相同点

1.let和const不存在变量提升(必须先声明再赋值才可以,否则报错),而var存在变量提升(不声明是undefined)

console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值
console.log(b); // 报错:b is not defined  ===> 找不到b这个变量
console.log(c); // 报错:c is not defined  ===> 找不到c这个变量
var a = 100;    
let b = 10;
const c = 10;
console.log(a);//a=100

2.let和const只能在块作用域中访问

if(1){
    var a = 100;
    let b = 10;
    const c = 1;
}
console.log(a); // 100
console.log(b)  // 报错:b is not defined  ===> 找不到b这个变量
console.log(c)  // 报错:c is not defined  ===> 找不到c这个变量

3.同一作用域下,let和const不能声明同名变量,而var可以

var a = 100;
console.log(a); //控制台输出 100
var a = 10;
console.log(a); //控制台输出 10
let a = 100;
let a = 10;//  控制台报错:Identifier 'a' has already been declared  ===> 标识符a已经被声明了。
不同点

let用于声明变量,const用于声明常量且必须有初始值,声明后不能修改,特殊情况:但是在定义的对象时对象属性值可以改变

const person = {
name : 'make',
sex : '男'
}
person.name = 'test'
console.log(person.name)    //运行发现控制台没有报错,且 person.name 被成功修改

修改对象里的属性值是可以的,但是直接修改对象不行,如下所示,原因是:

对象是引用类型的,person中保存的仅是对象的指针,而修改对象的属性不会改变对象的指针,所以这种情况就会修改成功。也就是说const定义的引用类型只要指针不发生改变,都是被允许的。

const person = {
name : 'make',
sex : '男'
}
person = {
name : 'test',
sex : '男'
}
console.log(person.name)  //控制台报错

2.Symbol

Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值,不能与其他数据类型进行运算。它是JavaScript中的第七种数据类型,与undefined、null、Number(数值)、String(字符串)、Boolean(布尔值)、Object(对象)并列。

使用Symbol()创建一个Symbol类型的值并赋值给a变量后,你就得到了一个在内存中独一无二的值。现在除了通过变量a,任何人在任何作用域内都无法重新创建出这个值。

const a = Symbol();
console.log(a);  //Symbol()
const a = new Symbol();//报错,因为Symbol是基本数据类型,而不是对象,不能 new 。

3.字符串新方法

1.includes()判断字符串是否包含参数字符串,返回boolean值。

const str = 'abcdefg'
console.log(`output->str`,str)  //abcdefg
console.log(`output->str.includes('d')`,str.includes('d'))  //true
console.log(`output->str.includes('9')`,str.includes('9'))  //false

2.startsWith() / endsWith(),判断字符串是否以参数字符串开头或结尾。返回boolean值。这两个方法可以有第二个参数,一个数字,表示开始查找的位置。

const str = 'abcdefg'
console.log(`output->str`,str)  //abcdefg
console.log(`output->str.startsWith('abc')`,str.startsWith('abc'))  //true
console.log(`output->str.startsWith('abd')`,str.startsWith('abd'))  //false
console.log(`output->str.endsWith('fg')`,str.endsWith('fg'))  //true
console.log(`output->str.endsWith('abd')`,str.endsWith('abd'))  //false

3.repeat()方法按指定次数返回一个新的字符串

const str = 'abcdefg'
console.log(`output->str`,str)  //abcdefg
console.log(`output->str.repeat('pick')`,str.repeat('pick',3))  //pickpickpick

4.padStart() / padEnd(),用参数字符串按给定长度从前面或后面补全字符串,返回新字符串

const strAdd = 'hell'
console.log(`output->strAdd`, strAdd.padStart(9,'lisa,'))  //lisa,hell
console.log(`output->strAdd`, strAdd.padEnd(5,'o'))  //hello
console.log(`output->strAdd`, strAdd.padEnd(6,'o'))  //helloo
console.log(`output->strAdd`, strAdd.padEnd(7,'o'))  //hellooo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值