一:立即执行函数
(function($){...})(jQuery)定义了一个匿名函数 并调用。等同于 var fn = function($){....}; fn(jQuery);
(funtion(){})(); (function(){}());立即执行函数;相当于先申明一个函数,声明完后直接调用;
二:函数的命名方式
1、一种是声明式。
而声明式会导致函数提升,function会被解释器优先编译。即我们用声明式写函数,可以在任何区域声明,不会影响我们调用。
function XXX(){}
2、一种是函数表达式
函数表达式我们经常使用,而函数表达式中的function则不会出现函数提升。而是JS解释器逐行解释,到了这一句才会解释。因此如果调用在函数表达式之前,则会调用失败。
var k = function(){}
-
两种区别:
-
fn1();
-
function fn1(){}//可以正常调用
-
fn2();
-
var fn2 = function(){}//无法调用
三:可选参数
这有详细的说明:https://www.jianshu.com/p/55fc2be7e0f0
1:最简易的方式-将可变参数设置到末尾(局限大)
function Person(name, age, height, weight) {
this.name = name;
this.age = age;
this.height = height || 0;
this.weight = weight || 0;
}
var person = new Person("Turtle", 23);
2:es5写法
function Person(options) {
this.name = options.name;
this.age = options.age || 0;
this.height = options.height;
this.weight = options.weight || 0;
}
var options = {
name: "Turtle",
height: "170cm",
};
var person = new Person(options);
//or
var person2 = new Person({
name: "Turtle",
height: "170cm",
});
3:es6写法(语法糖,实质上一样)
function Person({name, age = 0, height, weight = 0} = {}) {
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}