函数es6
定义windows
var a =function (){...}; 匿名函数方式定义
function a(){} 直接定义数组
函数的参数
arguments
能够接收任意个参数,是个像数组的内容,可for inapp
rest参数 es6新增函数
function foo(a,b,...rest)
这时候若是传入多于两个参数,后面的参数会合并成一个数组 rest,rest只能写在后面this
变量的做用域与解构赋值rest
若是同名,以最内部的为主,外部函数使用外部的,code
变量提示,只提高声明,不提高值对象
全局做用域 不在任何函数内部定义的变量就具备全局做用域 js 默认的 windowstoken
这说明JavaScript实际上只有一个全局做用域。任何变量(函数也视为变量),若是没有在当前函数做用域中找到,就会继续往上查找,最后若是在全局做用域中也没有找到,则报ReferenceError错误。
名字空间
不一样的js文件,若是使用了相同的全局变量,会形成覆盖掉,减小冲突的一个方法是把本身全部的变量和函数所有绑定到一个全局变量中
var myapp={}
myapp.name='xx'
myapp.fun=function(){
...
}
export myapp
export 与 export default 的区别
引入的时候不一样 export 须要带{} import { 。。。} from ...
export default 不须要 import xxx from xxxx
变量 与常量
let const
解构赋值
let [x, [y, z]] = ['hello', ['JavaScript', 'ES6']];
若是忽略某几个元素 用逗号分开
let [, , z] = ['hello', 'JavaScript', 'ES6'];
对象的解构赋值,能快速取出对象中的某些属性
let person={
name:'xxx',
sex:'xxx',
age:'xxx'
}
let {name,age,sex}=person
一样可嵌套
var person = {
name: '小明',
age: 20,
gender: 'male',
passport: 'G-12345678',
school: 'No.4 middle school',
address: {
city: 'Beijing',
street: 'No.1 Road',
zipcode: '100001'
}
};
var {name, address: {city, zip}} = person;
name; // '小明'
注意,若是访问的属性不存在,会undefinded
给值重命名
var {name, address: {city:xxx, zip}} = person;
这时候xxx==person.city
指定默认值
var {name, single=true} = person;
注意:若是变量已经被声明了,就不能再解构了,Uncaught SyntaxError: Unexpected token =
// 声明变量:
var x, y;
// 解构赋值:
{x, y} = { name: '小明', x: 100, y: 200};
方法 :在一个对象中绑定函数,称为这个对象的方法
修复this 指向
apply(this,[]),第一个是须要绑定的this变量,及谁能调用的了他,第二个为函数自己的参数
call(this,arg1,arg2),区别就是把参数打散一个个传
注意 对普通函数调用,咱们一般把this绑定为null。
所以 parseInt.apply(null,arguments) 与普通的parseInt 功能同样
装饰器
var count = 0;
var oldParseInt = parseInt; // 保存原函数
window.parseInt = function () {
count += 1;
return oldParseInt.apply(null, arguments); // 调用原函数
};
这个函数的做用就是改写了parseInt 函数,给他增长了一个调用计数的功能