这是我的第一篇掘金博客,开启掘金写作之路。
一、函数
(1)函数声明的方式
1.声明式
2.赋值式
(2)自调用函数
语法:
(function(){
console.log('自调用函数')
})()
(3)arguments:在函数内部自带的变量,表示所有实参的集合,是伪数组
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)已经在2015年6月正式发布ES6可以统称2015年后javascript所有最新版本
(1)let 和 const 关键字
1.变量声明
var变量
let变量
const变量
2.var与let区别
let先定义(声明)再使用,不能像var一样会变量提升(预解析)
let是块作用域
let不能重复声明变量,var可以
3. let 与 const区别
let声明的变量可以改变,const声明的变量不可以改变
let声明的变量可以改变,const声明的时候不可以赋值
4. let 与 const共同点
let和const不允许重复声明变量
(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),将错误对象抛给上层
代码处理,如果上层没有处理错误的代码,交给系统处理,系统处理方式:
停止程序执行,将错误信息打印显示在控制台
(1)try…catch 捕获错误
try{
//可以发生错误的代码
}catch(e){ e = 生成的错误对象
e
}
(2)throw 语句 中断程序
throw语句的作用是手动中断程序执行,抛出一个错误。对于JavaScript 引擎来说,遇到throw语句,程序就中止了。引擎会接收到throw抛出的信息
例: throw new Error('手动中断该程序')