“use strict”;
严格模式
体现方方面面,如
不可删除已定义的变量
必须先定义后使用
无函数提升
函数的this指针问题(windows=>undefined)
自调用函数的this指针问题(windows=>undefined)
构造函数无法直接·使用,必须new
不得在某些{}里写函数声明
函数不得有同名参数
等等
可拆开看主要原因后,分以下类型:
- 函数不得有同名参数(特殊校验)
- 原有的windows属性被改为undefined
- 取消函数和变量提升,{}判断的不合适
回调函数改变函数调用
bind(不运行,参数不是数组)apply(运行,参数是数组)apply(运行,参数不是数组)
闭包
可访问其他函数内部的值的函数,好处有俩,一个是延长变量的作用范围(时间/空间)与that=this相同,另一个好处是隐藏保护属性,防止被其他方式修改。
函数作用域
函数作用域可以将外部的属性赋值一份到内部,保护起来,(对象参数无意义)。
与闭包(演延长时间结合),可以储存一些数据的变化。
##高阶函数与递归。
高阶函数是说,函数调用或者返回函数(无法一次执行完成)。
递归就是调用函数是自己本身。必须有终止条件。
递归应用是拷贝。一次函数是浅拷贝。递归是深拷贝
正则表达式
正则表达式是一个对象,作用是匹配(验证),替换,提取(搜索)
- var rule=new RegEsp(表达式)
- var rule=表达式
rule.test(参数)
特殊字符
^以正则表达式开头
$以正则表达式结尾
[](只)可选一个
-a-z/A-Z/1-9
[^]取反
var let const
var有变量提升,无块级作用域,值可更改,存在变量死区
let有变量提升,有块级作用域,值可更改,for(let i),外部不可读取
var有变量提升,有块级作用域,值不更改,复杂数据类型的内容可改
var a=1,b=1,c=1;
function f1(){
console.log(a,b,c)//1,undefined,error
var b=2
let c=2
console.log(a,b,c)//1,2,2
}
var arr = []
var i = 0
for (let j = 0; i < 3; i++, j++) {
arr[i] = function () {
console.log(i, j)
}
}
arr[0]()//3 0
arr[1]()//3 1
不定参数
ES6中新增了不定参数,虽然之前有arguments,但是arguments对象,在ES6的箭头函数中是不可用的,而不定参数是可以在箭头函数中使用的。
href拼接
下载
<a :href="'域名'+'/release/deployer'">下载</a>