es6简介 let const 模板字符串

新增命令

1. 新增了let命令,用来声明变量。它的用法类似于var

let a = 10;
var b = 10;
console.log(a,b);//10 10
上面代码中,分别用letvar声明了变量,然后调用这两个变量,都能得到正确的值,但是两者之间还有区别的,如下例所示:
{
let c = 10;
var d = 10;
}
console.log(c);  //c is not defined
console.log(d); //10
上面代码中分别用letvar声明了变量,在代码块外面调用,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

注意:变量名命名规则
● 见名知义
● 不能使用关键字与保留字
● 遵循驼峰标识
● 变量名不能重(会报错)

循环中使用let
循环操作非常适合let命令,
for(let i = 0; i < 10;i++){
    console.log(i);
}
console.log(i); // i is not defined
上面代码中,计数器i只在for循环体内有效,在循环体外引用就会报错。

不存在变量提升
var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。

//var
console.log(a);  //undefined
var a = 10;

//let
console.log(b); // b is not defined
let b = 10;

上面代码中,变量a用var命令声明,会发生变量提升,即脚本开始运行时,变量a已经存在了,但是没有值,所以会输出undefined。变量b用let命令声明,不会发生变量提升。这表示在声明它之前,变量b是不存在的,这时如果用到它,就会抛出一个错误

块级作用域

let实际上为 JavaScript 新增了块级作用域。

function f1() {
    let n = 5;
    if (true) {
        let n = 10;
    }
    console.log(n); // 5
}
f1();

上面的两个代码块中都声明了变量变量n,最后调用函数输出的结果为5,这表示外层代码块不受内层代码块的影响,如果使用var声明变量,则结果为10。
块级作用域允许任意嵌套,外层作用域无法读取内层作用域的变量,而且内外层作用域可以声明同名变量。

 function f2(){
        let a = 'admin'
        console.log(a,1111);
        {
            let a = 'ujiuye'
            console.log(a,222);
        }
    }

   // console.log(a)//a is not defined

2.const

const声明的常量,后期不能修改常量的值,并且在声明的同时要立刻初始化,不能后面赋值,其声明常量的作用域与let相同,在代码块内有效,在声明前调用变量报错,即const声明的常量不存在变量提升。

//1.常量 const声明的常量,不能修改该常量的值
const PI = 3.1414;
console.log(PI);
PI = 3;    //Assignment to constant variable
console.log(PI);

//2.用const声明的常量,需要立即初始化,不能留到后面赋值
const a; //Missing initializer in const declaration

//3.作用域与let相同,在代码块内有效
if(true){
    const block = 10;
}
console.log(block); //block is not defined

//4.const声明的常量也不存在常量提升
console.log(up); // up is not defined
const up = 10;

模板字符串

传统JavaScript输出模板通常是:

var n = 10;
$("p").append("there are <b>"+n+"</b>"+
                "ujiuye IT"+
                "<em>"+n+"</em>");

这种写法相当繁琐不方便,如果字符串特别长的时候也许还会弄错+和“”的位置,es6引入了模板字符串来解决这个问题。模板字符串是增强版字符串,用反引号`表示,里面的变量用${}包起来就可以实现

var n = 10;
$("div").append(`there are <b>${n}</b>`);

它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。在模板中嵌入变量需要将变量名写在${}中。

var str = `string text line 1
             string text line 2`;
console.log(str);
console.log(`${n}`);

关于${}中的值:
1.变量
2.任意javascript表达式
3.获取对象的属性
4.调用函数

发布了14 篇原创文章 · 获赞 23 · 访问量 1905

猜你喜欢

转载自blog.csdn.net/weixin_43835425/article/details/103019438
今日推荐