JavaScript Function
function
method
方法&函数
- function 是更通用的概念,如数学、编程
- method 是面向对象中的概念,一般与类或对象成对出现
区别
关系
- 对象的属性可以是任意类型
- 对象的属性如果是函数类型,它就叫做这个对象的方法
- 所以方法的本质还是函数
目录
- 复杂类型
- 对象
- 数组
- 对象和数组补缺
- 函数
- 函数
- 问答
对象
1. 只有对象才有属性(object.name)
2. 字符串不是对象
那么请问为什么可以写 'string'.length?
1. alert(object) 会什么得到 "[object Object]
2. toString() 有什么用?
数组
array.sort()
array.sort(compare)
array.splice()
字符串
array.join('-')
string.split()
string.substring()
复杂类型
- 函数
- 声明一个函数
- 形式参数(形参)
- 实际参数(实参)
- 赋值为一个方法(函数表达式)
- 匿名方法与具名方法
- 函数的调用
- fun()
- obj.fun()
- fun.call()
- 声明一个函数
- 函数的属性和方法
- name
- length
- toString
- 函数嵌套(不建议嵌套太深)
- 函数定义 V.S. 函数执行
作用域
var v = 1;
function f(){
console.log(v);
}
f()
// 1
function f(){
var v = 1;
}
v
// ReferenceError: v is not defined
变量不是哪里都能用的
全局变量(跨文件)
局部变量(只能在函数内部访问)
函数作用域
- 函数能独立出一个作用域
- 函数里面可以访问函数外面
- 问:哪个外面?声明时的外面还是调用时的外面?
应用
- 立即执行函数
- 闭包
var v = 1;
function f(){
var v = 2;
console.log(v);
}
f()
// 2
v
// 1
var a = 1;
var x = function (){
console.log(a);
};
function f(){
var a = 2;
x();
}
f() // 1
函数能独立出一个作用域
函数里面可以访问函数外面
var v = 1;
function f(){
var v = 2;
console.log(v);
}
f()
// 2
v
// 1
var a = 1;
var x = function (){
console.log(a);
};
function f(){
var a = 2;
x();
}
f() // 1
函数能独立出一个作用域
函数里面可以访问函数外面
!function(){
var a = 1
console.log(a)
}()
!function(){
var a = 2
console.log(a)
}()
var items = document.getElementsByTagName('li')
for(var i=0; i<items.length; i++){
items[i].onclick = function(){
console.log(i)
}
}
立即执行函数(名词)
闭包、异步
回调
callback - call back
function doSomething(xxx){
console.log('some thing')
xxx('success')
}
doSomething(function(result){
console.log(result)
})
同步 V.S. 异步
console.log(1)
console.log(2)
console.log(3)
setTimeout(callback,time)
一段时间后将 callback 放入执行清单
JS 引擎做完手头的事情才会去看执行清单
console.log(1)
setTimeout(function(){
console.log(2)
},0)
console.log(3)
同步回调 V.S. 异步回调
function doSomething(callback){
console.log('some thing')
callback('success')
}
doSomething(function(result){
console.log(result)
})
var doSomething(callback){
setTimeout(function(){
console.log('some thing')
callback('success')
},0)
}
doSomething(function(result){
console.log(result)
})
你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。
而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。
完。
JavaScript Function
By 方方
JavaScript Function
- 1,773