This关键字与ES6新特性

81 阅读4分钟

这是我的第一篇掘金博客,开启掘金写作之路。

一、函数

1)函数声明的方式
     1.声明式
      2.赋值式
  (2)自调用函数
     语法:
     (function(){
         console.log('自调用函数')
     })()
  (3arguments:在函数内部自带的变量,表示所有实参的集合,是伪数组
       arguments.length 表示实参个数

二、this关键字

  每一个函数内部内部都有一个关键字是this,可以让我们直接调用的。函数内部的this指向谁,取决于函数的调用方式
   (1)事件处理函数中
        this指向事件源
   (2)在普通函数中
        this指向window对象
   (3)定时器参数函数中的this
        this指向window
    (4)自执行函数中
        this指向window
   (5)Object方法中
        this指向当前正在调用执行方法的对象
    注:函数内部的this只和函数的调用方式有关,和函数的定义方式没有关系
    

三、改变this指向 —— call,apply,bind

    (1)call
    函数名.call(要指向的对象,实参1,实参2...)
    (2)apply
    函数名.apply(要指向的对象,[实参1,实参2.......])
    (3)bind
    var newFn = 函数名.bind(要指向的对象)
    newFn(实参1,实参2.....)

四、ES6新特征

    JavaScript的标准——ECMAScript在不断发展,最新版ECMAScript 6标准(简称ES6)已经在20156月正式发布ES6可以统称2015年后javascript所有最新版本
    (1letconst 关键字
         1.变量声明
             var变量
             let变量
             const变量
         2.varlet区别
             let先定义(声明)再使用,不能像var一样会变量提升(预解析)
             let是块作用域
             let不能重复声明变量,var可以
         3. letconst区别
             let声明的变量可以改变,const声明的变量不可以改变
             let声明的变量可以改变,const声明的时候不可以赋值
         4. letconst共同点
          letconst不允许重复声明变量
    (2)箭头函数
        箭头函数是 ES6 里面一个简写函数的语法方式
        注:箭头函数只能简写函数表达式,不能简写声明式函数
        1. 语法: (函数的行参) => { 函数体内要执行的代码 }
              赋值式函数: let Fn = function(){
                //函数体
            }
            箭头函数: let fn = ()=>{
            //函数体
            }
        2.  函数体只有一行代码,同时有return语句返回值时, return也可以不写
        3.  箭头函数的特殊性
             箭头函数内部没有 this,箭头函数的 this 是上下文的 this
             函数的行参只有一个的时候可以不写 () 其余情况必须写
             例:let Fn = (m) => {}
             简写:let Fn = m => {}
             函数体只有一行代码的时候,可以不写 {} ,并且会自动 return
              例:let Fn = () => {
                 return 10 
               }
             简写::let Fn = () => 10
    (3)函数传递参数的时候的默认值
        我们在定义函数的时候,有的时候需要一个默认值出现,就是当我不传递参数的时候,使用默认值,传递参数了就使用传递的参数,ES6中我们可以直接把默认值写在形参位置
        例:function Fn(a = 10){
            console.log(a)
        }
        Fn()  //默认值输出为10
        Fn(20)  //赋值输出为20
        注,箭头函数也可以使用这种默认值方式    
    (4)解构赋值
        就是快速的从对象或者数组中取出成员的一个语法方式
        1.解构对象
          语法:let{属性1,属性2,属性3...} = 对象名
        2.解构数组
          语法:let[属性1,属性2,属性3..] = 数组名
        3.交换变量
          [a,b] = [b,a]
          注:以括号,方括号,正则开头的斜杠,加号,减号必须在前面加分号
    (5)展开运算符
         ES6 里面号新添加了一个运算符 ... ,叫做展开运算符。
         作用:
           1.把数组展开
           2.合并数组
           3.合并对象
           4.函数传递参数
    (6)模版字符串 —  ``
         ``可以直接在字符串里面拼接变量,变量写法是${}
    (7)对象字面量简化写法
        当属性与值的变量同名时。可以只写一个

五、js错误处理机制

    浏览器js引擎执行js代码,如果遇到错误代码,生成一个错误对象(Error),将错误对象抛给上层
    代码处理,如果上层没有处理错误的代码,交给系统处理,系统处理方式:
        停止程序执行,将错误信息打印显示在控制台
    (1trycatch  捕获错误
        try{
            //可以发生错误的代码
        }catch(e){  e = 生成的错误对象
            e
        }
    (2throw 语句  中断程序
      throw语句的作用是手动中断程序执行,抛出一个错误。对于JavaScript 引擎来说,遇到throw语句,程序就中止了。引擎会接收到throw抛出的信息
       例: throw new Error('手动中断该程序')