标签:function 10 arr 进阶 之旅 JavaScript 面试题 test var
文章目录
立即执行函数
立即执行函数简称IIFE
,顾名思义,立即执行并且执行完毕后销毁
immediately invoked function expression
写法
自动执行函数,执行完成后立即释放
// 写法一
(function(){})();
// 写法二
(function(){}()); // W3C建议
只要括号包起来就是表达式了
(function(){})
执行
表达式才能被执行符号执行
(function(){})(); // 表达式 -》 可以执行
var test1 = function(){}(); // 可以执行
function test(){}(); // 报错 -》 不是表达式
特性
立即执行函数,执行完毕后就销毁
var test = function(){
console.log(1);
}
console.log(test); // f(){console.log(1);}
var test2 = function(){
console.log(2);
}();
console.log(test2);
/**
2
undefinde
*/
更多写法
函数声明变为表达式的方法
+ - ! || &&
+ function test(){}();
- function test1(){}();
! function test2(){}();
...
三道经典面试题
面试题一
function test(){
var arr = [];
for(var i = 0; i < 10; i++){
arr[i] = function(){
document.write(i + '');
}
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++){
myArr[j](); // 10 10 10 10 10 10 10 10 10 10
}
- 为什么最后输出十个十?
- 修改代码将最后输出结果输出为0-9,你能用多少种方法实现?
方法一
function test(){
var arr = [];
for(var i = 0; i < 10; i++){
arr[i] = function(num){
document.write(num + '');
}
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++){
myArr[j](j);
}
方法二
function test(){
var arr = [];
for(var i = 0; i < 10; i++){
(function(j){
arr[j] = function(){
document.write(j + '');
}
}(i));
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++){
myArr[j]();
}
面试题二
var fn = (
function test1(){
return 1;
},
function test2(){
return '2';
}
)();
console.log(typeof(fn)) // string
// ====================
var fn = (
function test1(){
return 1;
},
function test2(){
return '2';
}
);
console.log(typeof(fn)) // function
面试题三
var a = 10;
if(function b(){}){
a += typeof(b);
}
console.log(a); // 10undefined
// 表达式忽略函数名
写在后面:
觉得写的还行,评论,收藏,点赞,关注哦~
标签:function,10,arr,进阶,之旅,JavaScript,面试题,test,var 来源: https://blog.csdn.net/Lyb__/article/details/119297689
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。