
1.
函数是运算元
2.
在函数内保存数据
3.
函数内的运算对函数外无副作用
一、函数是运算元
普通的函数调用时,可以抽象的理解为:函数就是一个运算符,传入的参数是运算元;
但当JavaScript中的函数作为另一个函数的参数使用时,是传递引用的,这个“传入参数”就可以被理解为是一个运算元。由此的结论是,(作为“传入参数”的)函数具有运算元的含义,“函数参数”与普通参数并没有什么不同。
二、在函数内保存数据
在命令式语言中,函数内部的私有变量(局部变量)是不能被保存的。从程序的执行方式上来讲,局部变量在栈上分配,在函数执行结束后,所占用的栈被释放。因此函数内的数据不可能被保存。
在JavaScript的函数中,函数内的私有变量可以被修改,而且当再次“进入”到该函数内部时,这个被修改的状态仍将持续。下面的例子说明了这个特性:
复制代码
代码如下:
var
set,get
function
MyFunc(){
var
value
=
100
function
set_value(v){
value
=
v
}
function
get_value(){
return
value
}
set
=
set_value
get
=
get_value
}
MyFunc()
console.log(get())
//100
set(300)
console.log(get())
//300
第一种方法,利用闭包:
function addfun(){
var buttonNodes = document.getElementsByTagName("input")
for (var x = 0x <buttonNodes.lengthx++) {
(function(x){
buttonNodes[x].onclick=function(){
alert(x)
}
})(x)
}
}
第二种方法,利用自定义属性值:
function addfun(){
var buttonNodes = document.getElementsByTagName("input")
for (var x = 0x <buttonNodes.lengthx++) {
buttonNodes[x].index=x
buttonNodes[x].onclick=function(){
alert(this.index)
}
}
}
第三种方法,利用ES6的新特性:
function addfun(){
var buttonNodes = document.getElementsByTagName("input")
for (let x = 0 x <buttonNodes.lengthx++) {
buttonNodes[x].onclick=function(){
alert(x)
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)