ES6新语法(一)

1.常量

        ES5没有定义声明常量的方式,ES6标准中引入了新的关键字const来定义常量。

        常量必须给初始值; 常量不能在同一作用域内重新定义或赋值; 

<script>
    const PI = 3.14;
    console.log(PI);
</script>

2.块级作用域

         JS中作用域有:全局作用域、函数作用域

         ES6中新增了块级作用域。

         块作用域由 { } 包括,if语句和for语句里面的{ }就属于块作用域。(不包括函数)

//注意 块级作用域中,使用var声明的变量是全局变量
{
    var a = 1;
    console.log(a);//1
}
console.log(a);//1

if(true){
    var b = 2;
    console.log(b);//2
}
console.log(b);//2

2.2、let关键字声明块级变量

  ES6中增加了let关键字声明变量,声明的变量只在当前代码块中生效(块级作用域)

         使用let声明的变量可以重新赋值,但是不能在同一作用域内重新声明

<script>
      // let声明的变量可以重新赋值
    {
        let a = 1;
          console.log(a);
          a = 2;
         console.log(a);;
    }
</script>

<script>
  // let声明的变量不能在同一作用域重新声明,直接报错 预解析错误
  {
      let a = 1;
      console.log(a);
      let a = 2;
      console.log(a);
}
</script>

2.3、let变量没有变量提升

{
     console.log(i);//报错
    let i = 8;
}

2.4、应用:let块级变量解决i丢失的问题

var arr = [3,4,5,6,7];

for(let i=0; i<arr.length; i++){
    // (function(i){
        setTimeout(function(){
            console.log(i);
            //console.log(arr[i]);
        }, 1000);
    // })(i);
}

3.字符串模板(模板字面量)

js中单双引号字符串,均不解析变量,需要使用+号将变量拼接在字符串中。 

         ES6中提供了字符串模板语法,允许使用反引号(倒引号) `` 来创建字符串,里面可以包含${变量名}形式的变量占位符。 其中的变量会被解析。

//生成一个随机数
var num=Math.random();

//将这个数字输出到console
console.log(‘your num is ‘ + num);
console.log(`your num is ${num}`);

var str = `hello
欢迎来到黑马大讲堂`;
console.log(str);

4.函数   

4.1 参数默认值

//ES5中,只能变相实现参数默认值(函数内部加判断处理)
function f1(username){
    //传统的指定默认参数的方式
    var username = username || ‘zhangsan‘;
    console.log(‘Hello ‘ + username);
}
f1();//Hello zhangsan
f1(‘lisi‘);//Hello lisi

//ES6中,直接给形参设置默认值
function f2(username=‘zhangsan‘){
    console.log(`Hello ${username}`);
    //console.log(‘Hello ‘ + username);
}

f2();//Hello zhangsan
f2(‘lisi‘);//Hello lisi

4.2 展开运算符(拆包)

ES6新增了展开运算符(用三个连续的点 (...) 表示),能够将数组和字符串字面量展开为多个元素

//展开数组
var arr = [1, 2, 3];
console.log(arr); // [1, 2, 3]
console.log(...arr); // 1 2 3
//展开字符串
var str = "hello";
console.log(str);
console.log(...str);

  应用:拓展参数   

        它允许传递数组或者类数组直接做为函数的参数。

//函数本来接收三个单独的参数
function f3(x,y,z){
    console.log(x,y,z);
}

//ES6中,我们可以将一个数组以拓展参数的形式传递,它能很好地映射到每个单独的参数
var arr=[3,4,5];
f3(...arr);//输出:3 4 5 

//ES5中,如果需要传递数组当参数,我们需要使用函数的apply方法
f3.apply(null,arr);//输出:3 4 5 

4.3 不定参数(可变参数/剩余参数)

不定参数是指,在函数中使用 命名参数 同时接收 不定数量 的 未命名参数,需要使用三个连续的点 (...) 。

         这是一种语法糖(在原语法上的简化用法),ES5通过函数内部的arguments对象来达到类似效果。

         不定参数的格式:

//不定参数 将多个实参放在一个数组变量中
//  ...x  三个点是固定格式,x是形参变量名
function f1(...x){
    console.log(x);
}
f1(3,4,5); //[3,4,5]

function f2(m, n, ...x){
      console.log(m, n, x);
}
f2(2,3,4,5,6); // m=2  n=3  x=[4,5,6]

原文地址:https://www.cnblogs.com/shineguang/p/11235110.html

时间: 2024-10-08 08:50:05

ES6新语法(一)的相关文章

总结常见的ES6新语法特性

总结常见的ES6新语法特性 ES6给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数(=>).class等等.用一句话来说就是: ES6给我们提供了许多的新语法和代码特性来提高javascript的体验 不过遗憾的是,现在还没有浏览器能够很好的支持es6语法,点这里查看浏览器支持情况,所以我们在开发中还需要用babel进行转换为CommonJS这种模块化标准的语法. 因为下面我会讲到一些es6新特性的例子,如果想要

总结常见的ES6新语法特性。

前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数(=>).class等等.用一句话来说就是: ES6给我们提供了许多的新语法和代码特性来提高javascript的体验 不过遗憾的是,现在还没有浏览器能够很好的支持es6语法,点这里查看浏览器支持情况,所以我们在开发中还需要用babel进行转换为CommonJS这种模块化标准的语法. 因为下面我会讲到一

ES6新语法之---对象字面量扩展、模板字符串(5)

这节课学习ES6中对象字面量扩展和新增模板字符串 第一部分:对象字面量扩展 1.简洁写法 ES6对于对象字面量属性提供了简写方式. 1.1:属性简写 //传统写法 var x = 2, y = 3, o = { x: x, y: y }; //ES6简洁写法 var x = 2, y = 3, o = { x, //属性名和赋值变量名相同时,可简写 y }; 1.2:方法简写 //传统写法 var o = { x: function() { //... }, y: function() { //

es6新语法

SegmentFault 头条 问答 专栏 讲堂 职位 活动 搜索 消息 注册 · 登录 home javascript php python java mysql ios android node.js html5 linux c++ css3 git golang ruby vim docker mongodb 文 es6语法快速上手 es6 javascript 奋进的小莫 2016年06月17日发布 推荐 2 推荐 收藏 44 收藏,6.5k 浏览 随着google和firfox以及no

ES6新语法概览

简介 ES6是JavaScript语言的新一代标准,加入了一些新的功能和语法,正式发布于2015年6月,亦称ES2015:该标准由ECMA(欧洲计算机制造联合会)的第39号技术专家委员会(TC39)制订,ES7正在制订中,据称会在2017年发布. 语法 箭头函数.this ES6中可以使用 => 作为函数表达形式,极简风格,参数+ => +函数体. var foo = function(){return 1;}; //等价于 let foo = () => 1; let nums = [

ES6新语法之---函数扩展(7)

这节学习ES6中对函数新增的方法和属性. 1.新增函数的参数默认值 参考S6系列第二篇:http://www.cnblogs.com/diweikang/p/8976854.html 2.新增了函数的rest参数 参考ES6系列第二篇:http://www.cnblogs.com/diweikang/p/8976854.html 3.length属性 作用:获取函数预期传入的参数个数. 指定默认值后,length属性将返回没有指定默认值参数的个数. (function (a) {}).lengt

ES6新语法(二)

1.解构         在ES6中,可以使用解构从数组和对象提取值并赋值给独特的变量,即将数组或对象中的值,拆成一个一个变量.         解构:自动解析数组或对象中的值,并赋值给指定的变量.. 1.1数组解构 var arr = [3,4,5]; var [a, b, c] = arr; console.log(a, b, c); //还可以忽略值 需要使用,占位 var arr = [3,4,5]; var [a,, c] = arr; console.log(a, c); //函数返

解构赋值 —— ES6新语法学习心得

## 3.解构赋值 ## 作用:将数组.对象.函数的参数 解构,对变量进行赋值,可以直接调用该变量,大大提高效率 ## 例 1: ##  标准模式的解构赋值 var [a,b,c]=[1,2,3] console.log(a) //1 console.log(b) //2 console.log(c) //3 ## 例2 : ##  嵌套解构赋值,只要"模式匹配",就能解构赋值,如果没有对应的值,就是undefined let [foo, [[bar], baz]] = [1, [[2

【JavaScript】ES6 新语法

function* 声明 function* 声明(function关键字后跟一个星号)定义一个generator(生成器)函数,返回一个Generator对象. 生成器是一种可以从中退出并在之后重新进入的函数.生成器的环境(绑定的变量)会在每次执行后被保存,下次进入时可继续使用. 调用一个生成器函数并不马上执行它的主体,而是返回一个这个生成器函数的迭代器(iterator)对象.当这个迭代器的next()方法被调用时,生成器函数的主体会被执行直至第一个yield表达式,该表达式定义了迭代器返回