文章详情页
javascript - 为什么结果是3不是2呢?
浏览:200日期:2023-05-16 09:28:24
问题描述
function F(){ var arr=[],i; for(i=0;i<3;i++){arr[i]=function(){ return i;}; } return arr;}arr[0]();//3arr[1]();//3arr[2]();//3
问题解答
回答1:for(i=0;i<3;i++){循环体}执行过程是赋初值0,然后执行判断语句i<3,为true的话,执行循环体,循环体执行完之后执行i++;所以当i执行到2的时候,i<3为true,执行循环体,然后i++,此时i等于3,然后判断i<3,判断为false,不执行循环体,退出循环,此时i=3;
回答2:最后一次for循环过后,i++把i变成了3
回答3:
此题用断点方式很容易就看出来了,其实就是函数执行时机的问题,函数是在调用时才执行,循环执行完后,i=3,再调用数组内的函数时,i只能为3.
回答4:js顺序执行,首先执行所有的循环,在执行的过程中以此arr[0]= function(){return i;},arr[1]= function(){return i;},arr[2]= function(){return i;}同时i循环后编程3,接着调用arr[0]()等调用的时候,此时作用域内的i是3,所以依次都会是3.
PS: 这题应该会先执行arr = F()把,否则会报错呀~~
标签:
JavaScript
相关文章:
1. javascript - nginx 反向代理 js跨域问题?2. 如何在python3 程序中调用 python2 ?3. python for循环中的函数只能运行一次?4. 关于登录界面不跳转5. 关于设计mysql中一个字段自增的函数。6. Python这句话什么意思,语法有点怪?7. mysql - 在PHPMyadmin上乱捣鼓后出现 了 - #2002 - — 服务器没有响应(或本地服务器的套接字没有正确设置)。8. python - flask redirect 重定向问题?9. javascript - 百度地图一开始设置了中心点,怎么通过按钮在调转到对应的中心点????10. Python如何利用Selenium或者PhantomJS爬取动态网页内容
排行榜

网公网安备