• ECMAscript6(ES6)新特性语法总结(一)


    ES6/ES2015,,在ES5的基础上扩展了很多新的功能,在使用的时候要慎重,因为有一部分js代码在部分浏览器是不兼容的,但是所有写在服务器端的代码基本上都支持ES6的写法.

    新特性:

    一.开启严格模式

    在函数的第一行加上"use strict"字符串,如果需要整个js代码中开启,就在js第一行加上这一段字符.

    设置"严格模式"的目的,主要有:

    • 清除javascript语法的一些不合理,不严谨之处,减少怪异行为
    • 清楚代码运行的一些不安全之处,保证代码运行的安全.
    • 提高编译效率,增加运行速度
    • 为未来新版本的javascript做好铺垫.

    注意:

    在正常模式下可以直接使用为未声明的变量 严格模式不行

    name="jhon"; 
    console.log(name);
     //输出jhon

    在正常模式下一个方法可以有很多个同名参数 严格模式不行

    function fn(aa,aa,bb){
    return aa+aa+bb;
    }
    console.log(fn("11","22","33"));
    //输出222233

    二.定义变量使用let(类似var)

    javascript中的var:

    • var声明的变量会有变量提升
    • var没有块级作用域
    • var可以多次重复定义一个变量

    这些声明在后天开发语言是不允许的,为了规范变量的声明ES6退出了新的关键字let代替var的声明变量.

    let的特点:

    • let声明的变量不会有变量提升
    • let存在块级作用域
    • let不能多次重复定义变量

    三.定义常量const

    常量是指不会改变的数据.

    常量const的特点:

    • 值不能再改变
    • 常量具有块级作用域
    • 不要在块级作用域中声明常量
    • 没有变量提升,要先声明后使用
    • 不可以声明同名的常量
    • 一定要赋初始值,否则会报错
    • 如果声明的是常量是一个对象,只要对象的地址不改变,其内部的属性可以改变

    四.字符串的扩展

          如果要判断字符串”hello word”中是否存在”word”,用字符串中的方法只有indexOf,在ES6中又为我们提供了其它的方法:

    • includes()->返回布尔值,用于判字符串是否包含某些字符串
    • startsWith()->返回布尔值,用于判断字符串是否以某些字符开头
    • endWith()->返回布尔值,用于判断字符串是否以缪谢字符结尾.有两个参数(字符串,数值)->("o",3)用于判断下标3的字符串是否是"0".
    • repeat()->传入一个数字,将字符串重复数字对应的次数返回.

                注意:传入的是正小数,数字会被向下取整;传入字符串类型的数值("5"),可以,传入("5a")不可以当空处理;不能传入负数.

    五.模块语法:"模块字符串"

    结构:`模板内容${code}`

    注意:code可以是变量,方法名,js表达式

     1 //变量
     2 let name='jack';
     3 let temp=`我叫${name}`;
     4 //temp==>我叫jack
     5 
     6 
     7 //表达式
     8 let a=1;
     9 let b=1;
    10 let temp=`a+b的和是$(a+b)`;
    11 //temp==>2
    12 
    13 //方法
    14 function getName(){
    15 return 'jack';
    16 }
    17 let temp=`我叫${getName()}`;
    18 //temp==>jack

    六.箭头函数 0=>{}

    为了方便书写,es6规定了一种新的写法来简化匿名函数:去掉function改为=>,结构为()=>{}

    过程一:去掉function关键字

    arr.each(function(m,n){
                  console.log(n)

    });

    得到:arr.each((m,n)=>{console.log(n);});

    过程二:如果只有一句代码可以去掉大括号和return关键字

    得到: arr.each((m,n)=>console.log(n));

    过程三:如果参数只一个,可以将参数中的小括号去掉。

    得到: arr.each(n=>console.log(n))

    过程四:如果代码只有一句,并且代码中return,可以去掉return.

    得到: arr.sort((n,m)=>n-m);

    注意:箭头函数没有固定的写法,它是根据当前方法的参数和方法的返回值来的

    箭头函数中this指向问题:

    • 箭头函数没有自己的this,函数体内部写的this,会顺着作用域去找最近真实存在的this。

    • 箭头函数内部的this是定义时所在的对象,而不是使用时所在的对象,并且不会改变。

    • 箭头函数不能作为构造函数
    • 箭头函数中不存在arguments,箭头函数中的argument指向的是外层的arguments.

    未完,待续...

  • 相关阅读:
    几个不同的关键XPath概念
    go get 下载的包放在哪里呢?
    之前写的关于chromedp的文章被别人转到CSDN,很受鼓励,再来一篇golang爬虫实例
    微信小程序填坑之旅(2)-wx.showLoading的时候,仍能点击穿透,造成重复点击button的问题
    微信小程序填坑之旅(1)-app.js中用云开发获取openid,在其他页上用app.globaldata.openid获取为空
    JS 定时器-setInterval、clearInterval、setTimeout
    微信小程序开发入门教程(四)---自己动手做个小程序
    MT【247】恒成立画图像
    MT【246】方程根$acksim$图像交点
    MT【245】小概率事件
  • 原文地址:https://www.cnblogs.com/xiaoyun1121/p/6067367.html
Copyright © 2020-2023  润新知