ES6的语法
程序员文章站
2022-07-16 20:14:24
...
一,定义变量let(类似var)
在js一直有一个bug是var:
1、var 声明的变量会有变量提升
console.log(name); //jhon
var name = 'jhon';
2、var 没有块级作用域
var name2 = 'jjjon';
{
var name2 = 'tom';
}
console.log(name2); //tom
3、var 可以多次重复定义一个变量,后面的变量替换前面变量
var name3 = 'jond';
var age = 18;
var name3 = 19;
var name3 = 'rose';
console.log(name3); //rose
新的定义变量let:
1、let声明的变量不会有变量提升,只有在前面定义了在后面才能用
console.log(name4); //报错
let name4 = '1112';
2、let存在块级作用域
let name5 = '222';
{
let name5 = ' ttt';
}
console.log(name5); //222
3、let不能多次重复定义一个变量
let name6 = 'aa';
let name6 = 'bb'; //报错
console.log(name6); //aa
二,const 声明一个常量
常量:指的是不会改变的数据
1、值不能再改变
const pi = 3.01415;
//pi = 3; //报错
{
const arr = [5,6,8,9,];
arr.push(7);
console.log(arr); //(5) [5, 6, 8, 9, 7]
arr = 10; //值不能改变,否则报错
}
2、常量具有块级作用域
{
const ban = "vin";
}
console.log(ban); //报错
3、没有变量提升,先声明后使用
console.log(ba); //报错
const ba = 'liu';
4、不能声明同名的常量
5、一定要赋初始值,否则报错
const bb; //报错
6、如果声明的是对象,对象的地址不能改变,但是可以改变其内部的属性
const obj = {
na:"jjjj",
age:20
};
console.log(obj.na); //jjjj
obj.na = "ccs";
console.log(obj.na); //ccs
例如:应用场景,固定的地址就可以用常量
// var path = 1122
// var path = '1243';
const path = 'path';
console.log(path); //path
三,字符串的扩展
1、判断字符串”hello word”是否存在”word”
var str = 'hello word';
var result = str.indexOf('word');
console.log(result); //6
2,ES6提供includes():返回布尔值,用于判断字符串是否包含某些字符
var bool = str.includes('word');
console.log(bool); //true
3,startsWith(str[,num]):返回布尔值,用于判断字符串是否以某个字符开头
var bool2 = str.startsWith('hello');
console.log(bool2); //true
//给这个方法传入2个参数
var bool3 = str.startsWith('word',6);
console.log(bool3); //true
4,endsWith(str[,num]):返回布尔值,用于判断字符串是否以某些字符结尾
var bool4 = str.endsWith('d');
console.log(bool4); //true
//给这个方法传入两个参数
var bool5 = str.endsWith('o',7);
console.log(bool5); //false
5,repeat(num):传入数字,这个方法将字符串重复数字对应次数
var str322= '我爱我家,\n';
console.log(str322.repeat(3)); //3行 我爱我家,
四, 5.0模板语法 :模板字符串
var obj33 = {
name:'zhuzhu',
age:18,
sex:'男',
hobby:'女',
veight:120,
height:180
};
// 字符串拼接方法
var str4 = '大家好,我叫:'+obj33.name+',今年'+obj33.age+',性别'+obj33.sex+',爱好'+obj33.hobby+'。';
console.log(str4); //大家好,我叫:zhuzhu,今年18,性别男,爱好女。
// 但是字符串的拼接太麻烦了,有没有简单的方法来解决这个问题呢,有的,模板字符串就可以了
var temp111 = `大家好,我叫${obj33.name},今年${obj33.age},性别${obj33.sex},爱好${obj33.hobby}`;
console.log(temp111); //大家好,我叫zhuzhu,今年18,性别男,爱好女
//1,可以是变量
let name8 = "美女";
let temp22 = `我叫${name8}`;
console.log(temp22); //我叫美女
// 2,可以是方法
function getName(){
return "宝宝";
}
let temp3 = `我叫${getName()}`;
console.log(temp3); //我叫宝宝
// 3,可以是表达式
let aa = 1 ;
let bb = 2;
let temp4 = `a + b=${aa+bb}`;
console.log(temp4); //a + b=3
五,.0箭头函数:()=>{}
// 最原始函数
var arr = [2,3,5,7];
$(arr).each(function(index,item){
console.log(item);
});
// 箭头函数改造
// 改造一:匿名函数中的funtion关键字我们可以省略,参数与方法体之间中=>
$(arr).each((index,item)=>{console.log(item);})
// 改造二:如果方法体中的代码只有一句我们可以去掉{},并且代码结尾的分号要去掉
$(arr).each((index,item) =>console.log(item));
上一篇: JSP中在ES5标准下使用ES6的Promise异步函数
下一篇: ES6知识点整理Set的应用