定义函数有两种方式:函数声明和函数表达式。它们之间一个重要的区别是函数提升。
1.函数声明会进行函数提升,所以函数调用在函数声明之前也不会报错:
```
test();
function test(){
alert(1);
}
```
2.函数表达式不会进行函数提升,函数调用在函数声明之前的话会报错:
```
test(); // test is not a function
var test=function(){
alert(1);
}
```
递归函数是通过在函数内部调用自身实现的。
直接使用函数名进行递归调用
```
function f(num){
if(num==1){
r继续阅读 »
写在前面
废话不多说,请看下面3道题,把6个console.log()的答案写下来,然后对照着在Console控制台里敲一遍,校验一下结果。
more
代码片段
```
var A = function() {};
a.prototype = {
num : 1,
text : 'aaa'
};
var x = new A();
// 第一题
console.log(x.num);
console.log(x.text);
// --这里是分割线--
var y = new A();
A.prototype = {
num : 2
};
// 第二题
console.log(y.num);
c继续阅读 »
小函数蕴含着大学问:函数节流之水龙头与弹簧、尾递归优化、展开参数函数、异步化函数等,整理了几个有趣的js函数,后续还会增加。
函数节流:水龙头与弹簧
什么是节流,请自行百谷
Throttle:这种方式是类似水龙头,当水滴足够大时水滴就会掉下来;类似的,当时间超过某个timeout的时候就执行函数
```js
var throttle = function(fn, timeout) {
var last = new Date().getTimes();
return function() {
var curr = new Date().getTimes();
if (curr - last >=继续阅读 »