JavaScript 函数
JavaScript 函数
方法&函数
区别
- function 是更通用的概念,如数学、编程
- method 是面向对象中的概念,一般与类或对象成对出现
关系
- 对象的属性可以是任意类型
- 对象的属性如果是函数类型,它就叫做这个对象的方法
- 所以方法的本质还是函数
函数的调用
- fun()
- obj.fun()
- fun.call()
函数的属性和方法
- name
- length
- toString
作用域
变量不是哪里都可以使用
全局变量(跨文件)
var n = 1;
function fn(){
console.log(n); // 1
}
局部变量(只能在函数内部访问)
function fn1(){
var n = 2;
}
console.log(n); // Uncaught ReferenceError: number is not defined
函数作用域
- 函数能独立出一个作用域
var n = 1;
function f(){
var n = 2;
console.log(n); // 在当前作用域进行变量寻找
}
f();
console.log(n); // 在全局作用域进行变量寻找
- 函数里面可以访问函数外面
var n = 1;
var x = function(){
console.log(n);
};
function f(){
var n = 2;
x();
}
f();
- 自调用匿名函数
!function (){
var n = 1;
console.log(n);
};
~function (){
var n = 1;
console.log(n);
};
(function(){
var n = 1;
console.log(n);
}());
- 闭包
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<ul>
<li>aaa</li>
<li>bbb</li>
<li>ccc</li>
<li>ddd</li>
<li>eee</li>
</ul>
<script>
var items = document.getElementsByTagName('li'),
i = 0;
for (i; i < items.length; i++) {
items[i].onclick = function(e){
alert(i);
};
}
</script>
</body>
</html>
function fn1(){
var a = 1;
function fn2(){
a += 1;
console.log(a);
}
return fn2;
}
var r = fn1();
r(); // 2
r(); // 3
r(); // 4
- 回调(callback)给别人调用的函数
function trySomething(callback){
console.log('some thing');
callback('成功');
}
trySomething(function(value){
console.log(value);
});
setTimeout(callback, time),一段时间后将 callback 放入执行清单
JavaScript 引擎做完手头的事情才会去看执行清单
- 同步
console.log(1);
console.log(2);
console.log(3);
- 异步
console.log(1);
setTimeout(function(){
console.log(2);
},0);
console.log(3);