函數(shù)的聲明和函數(shù)表達式
函數(shù)聲明如果放在if-else的語句中,在IE8的瀏覽器中會出現(xiàn)問題,
以后寧愿要函數(shù)表達式,都不要用函數(shù)聲明
// 函數(shù)聲明
if (true) {
function f1() {
console.log("if的方法");
};
} else {
function f1() {
console.log("else的方法");
};
}
f1();
// 函數(shù)表達式
var ff;
if (true) {
ff = function() {
console.log("函數(shù)表達式的if")
}
} else {
ff = function() {
console.log("函數(shù)表達式的else")
}
}
ff();
函數(shù)中this的指向
- 函數(shù)中this的指向
- 普通函數(shù)中this的指向:window
- 對象.方法中this的指向:當前的實例對象
- 定時器方法中this的指向:window
- 構造函數(shù)中this的指向:實例對象
- 原型對象方法中this的指向:實例對象
<script type="text/javascript">
"use strict"; //使用 嚴格模式
function f1() {
console.log(this); //window
};
//普通函數(shù)
function f1() {
console.log(this);
}
f1();
定時器中的this
setInterval(function () {
console.log(this);
},1000);
// 構造函數(shù)
function Person() {
console.log(this);
對象的方法
this.sayHi=function () {
console.log(this);
};
}
// 原型中的方法
Person.prototype.eat=function () {
console.log(this);
};
var per=new Person();
console.log(per);
per.sayHi();
per.eat();
//BOM:中頂級對象是window,瀏覽器中所有的東西都是window的
</script>
函數(shù)的不同調(diào)用方式
<script type="text/javascript">
// 普通函數(shù)
function f1() {
console.log("張家界案件");
}
f1();
// 構造函數(shù)---通過new來創(chuàng)建對象
function F1() {
console.log("阿加");
}
var f = new F1();
// 對象中的方法
function Person() {
this.play = function() {
console.log("金娃雞啊");
};
}
var per = new Person();
per.play();
</script>
函數(shù)也是對象
- 函數(shù)是對象税稼,對象不一定是函數(shù)
- 對象中有proto原型橡卤,是對象
- 函數(shù)中有prototype原型,是對象
- 如果一個東西里面有prototype豪直,又有proto谓着,說明是函數(shù)庶艾,也是對象
<script type="text/javascript">
var f1 = new Function("num1", "num2", "return num1+num2");
console.log(f1(10, 20)); //30
console.log(f1.__proto__ == Function.prototype); //true
// 所以,函數(shù)實際上也是對象
console.dir(f1);
console.dir(Function);
</script>
數(shù)組的函數(shù)調(diào)用
<script type="text/javascript">
var arr = [function() {
console.log("我就安靜")
},
function() {
console.log("分啊啊")
},
function() {
console.log("個恩愛")
},
function() {
console.log("哈哈哈")
},
function() {
console.log("還問我")
}
];
// 回調(diào)函數(shù):函數(shù)作為參數(shù)使用
arr.forEach(function(ele) {
ele();
})
</script>