JS中自动执行函数小结
2010-02-11 10:07
309 查看
JS中自动执行函数小结
请看以下两个函数:
1.function a(){
2.
alert("a")
3.}
1.var b= function(){
2.
alert("b")
3.}
它们俩有何不同呢?翻开书,作者会告诉我们,前者为函数声明,后者为函数表达式。函数声明作为一种声明,当然会在预编译阶级有所动作(声明提前),而函数表达式则不会。另一个区别是,函数声明是语句,语句是没有返回值,不能直接加一对括号让它们执行。
1.function a (){
2.
alert("a")
3.}();//报错
1.var b = function(){
2.
alert("b")
3.}();
给 function 外套一对括号就不报错了,括号是表达式,是表达式就有返回值,所以可以在后面加一对括号让它们执行,再看
1.(function a (){
2.
alert("a")
3.})();//没有问题
(function a (){
alert("a")
})();//没有问题
运行代码
另外,我们知道,函数名的作用就是用来引用的,现在没用了,我们是不是可以把它去掉呢?
1.(function (){
2.
alert(arguments.callee)
3.})();//弹出自身
(function (){
alert(arguments.callee)
})();//弹出自身
运行代码
知道这个,我们就可以方便地递归自身了。如弄一个深拷贝函数
01.var deepExtend = function(destination, source) {
02.
for (var property in source) {
03.
if (source[property] && source[property].constructor &&
04.
source[property].constructor === Object) {
05.
destination[property] = destination[property] || {};
06.
arguments.callee(destination[property], source[property]);
07.
} else {
08.
destination[property] = source[property];
09.
}
10.
}
11.
return destination;
12.};
另外,从另一方便也启法了我们如何兼价地批量生产各种各样的自动执行函数。因为把函数转换为表达式的方法并一定要靠括号这个操作符,我们还可以用void操作符,~操作符,!操作符……
1.void function(){
2.
alert("飞鸽传书");
3.}()
1.0, function(){
2.
alert("飞鸽传书");
3.}();1.-function(){
2.
alert("飞鸽传书");
3.}();1.+function(){
2.
alert("飞鸽传书");
3.}();1.!function(){
2.
alert("飞鸽传书");
3.}();1.~function(){
2.
alert("飞鸽传书");
3.}();1.typeof function(){
2.
alert("飞鸽传书");
3.}();
请看以下两个函数:
1.function a(){
2.
alert("a")
3.}
1.var b= function(){
2.
alert("b")
3.}
它们俩有何不同呢?翻开书,作者会告诉我们,前者为函数声明,后者为函数表达式。函数声明作为一种声明,当然会在预编译阶级有所动作(声明提前),而函数表达式则不会。另一个区别是,函数声明是语句,语句是没有返回值,不能直接加一对括号让它们执行。
1.function a (){
2.
alert("a")
3.}();//报错
1.var b = function(){
2.
alert("b")
3.}();
给 function 外套一对括号就不报错了,括号是表达式,是表达式就有返回值,所以可以在后面加一对括号让它们执行,再看
1.(function a (){
2.
alert("a")
3.})();//没有问题
(function a (){
alert("a")
})();//没有问题
运行代码
另外,我们知道,函数名的作用就是用来引用的,现在没用了,我们是不是可以把它去掉呢?
1.(function (){
2.
alert(arguments.callee)
3.})();//弹出自身
(function (){
alert(arguments.callee)
})();//弹出自身
运行代码
知道这个,我们就可以方便地递归自身了。如弄一个深拷贝函数
01.var deepExtend = function(destination, source) {
02.
for (var property in source) {
03.
if (source[property] && source[property].constructor &&
04.
source[property].constructor === Object) {
05.
destination[property] = destination[property] || {};
06.
arguments.callee(destination[property], source[property]);
07.
} else {
08.
destination[property] = source[property];
09.
}
10.
}
11.
return destination;
12.};
另外,从另一方便也启法了我们如何兼价地批量生产各种各样的自动执行函数。因为把函数转换为表达式的方法并一定要靠括号这个操作符,我们还可以用void操作符,~操作符,!操作符……
1.void function(){
2.
alert("飞鸽传书");
3.}()
1.0, function(){
2.
alert("飞鸽传书");
3.}();1.-function(){
2.
alert("飞鸽传书");
3.}();1.+function(){
2.
alert("飞鸽传书");
3.}();1.!function(){
2.
alert("飞鸽传书");
3.}();1.~function(){
2.
alert("飞鸽传书");
3.}();1.typeof function(){
2.
alert("飞鸽传书");
3.}();
相关文章推荐
- 在widget.js中很多函数是自动执行的,不调用也会执行
- 在网页中JS函数自动执行常用三种方法
- 在网页中JS函数自动执行常用三种方法
- 页面加载完成后自动执行一个方法函数的JQ、JS方法
- 页面加载完成后自动执行一个方法函数的JQ、JS方法
- 网页中JS函数自动执行的方法
- 在网页中JS函数自动执行常用三种方法
- JS函数执行完突然自动刷新了
- 在网页中JS函数自动执行常用三种方法
- JS函数自动执行
- 在网页中JS函数自动执行常用三种方法
- 在网页中JS函数自动执行常用三种方法
- 网页中JS函数自动执行常用三种方法
- 网页中JS函数自动执行常用三种方法
- 页面加载完成后自动执行一个方法函数的JQ和JS方法
- js函数必须在alert执行才能执行
- js执行后console自动返回undefined问题
- js自执行函数、调用递归函数、圆括号运算符、函数声明的提升
- js中自执行函数的作用
- js立即执行函数简介与实现方式