请问执行结果为什么不是alert(1)?

问题描述

function xxx(){ ss=[] for(var i=0;i<6;i++) { var ii= i; var s = function () { alert(ii) } ss[i] = s; } ss[1]();} 问题补充:问题是变量ii是局部变量啊,作用域在for里面,每次循环ii都不是同一个变量。 simoncz 写道

解决方案

在执行函数的时候使用的是最后一个声明变量ii,之前声明的ii变量都会被覆盖
解决方案二:
主要是内部函数对ii进行了引用function xxx(){ ss=[] for(var i=0;i<6;i++) { var ii = i; var s = function (y) { return function(){alert(y);} }(ii); ss[i] = s; } ss[1](); } 以上代码主要是执行函数吧ii作为参数传递。返回一个匿名函数以用参数y,这样返回的才是1
解决方案三:
这个循环里面的ii最后已经变成5了,function xxx(){ ss=[] for(var i=0;i<6;i++) { var ii = i; ss[i] = "s("+ii+")"; } eval(ss[1]);}var s = function (ii) { alert(ii) }这样才是1

时间: 2024-08-01 13:30:35

请问执行结果为什么不是alert(1)?的相关文章

validation-为什么绑定的id事件不执行啊

问题描述 为什么绑定的id事件不执行啊 function find(obj) { alert("xxx"); if(!$('#validate').validation()){ alert("xxxx"); return false; } if(!validation()){ popMessage(validationMsg(),null,function(){ $('#searchCondition').focus(); }); return false; } 控

html-点击一个按钮alert一个提示信息,同时添加一个样式,怎样在关闭提示信息之后,恢复原来的样式

问题描述 点击一个按钮alert一个提示信息,同时添加一个样式,怎样在关闭提示信息之后,恢复原来的样式 点击一个按钮alert一个提示信息,同时添加一个样式,怎样在关闭提示信息之后,恢复原来的样式 通过addClass()添加一个样式,关闭提示信息后怎么remove这个样式啊 解决方案 alert会挂起下面代码的执行,你直接在alert后增加删除添加样式的代码即可.如果是div模拟的就需要关闭事件才行. alert('1234'); $("xxxxxxxx').removeClass('xxxx

ie 8-JQuery Live()在ie8上无法执行

问题描述 JQuery Live()在ie8上无法执行 没有任何错误提示就是事件无法执行 解决方案 live后增加alert看执行没有,live肯定是没有问题的 解决方案二: 你用的jquery几了?现在不是live都换on了么

浅谈js在html中的加载执行顺序,多个jquery ready执行顺序_javascript技巧

jQuery $(document).ready()执行顺序: 当页面DOM 元素全部加载完毕后就执行.ready().$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 如果在.ready()执行之前有javascript代码存在,那么javascript将怎么执行呢? 答案是先执行.ready()之前的javascript代码,然后执行.ready(). 多个$(document).ready()的执行顺序并非单纯的顺序执行,其与嵌套层级也有一定的关系.

js中confirm()与alert()方法用法与区别

在调用 confirm() 时,将暂停对 JavaScript 代码的执行,在用户作出响应之前,不会执行下一条语句 alert()方法不是一个提示,没有其它的任何操作了 confirm()  代码如下 复制代码 <html> <head> <title>confrim 的使用方法</title> <script type="text/javascript"> function clear1() {  if(confirm(&q

jquery模仿js的confirm()/alert()效果

实现由两种思路: 思路1:将确定和取消后需要执行的函数直接作为两个button的click事件回掉函数,有一个缺点是调用过后需要手动隐藏层 思路2:事件点击后先将帮顶在该dom上的其他事件移除,然后绑定上警告框事件,在根据用户在警告事件里的选择来确定需要执行的事件. 可能说的很绕.下面对思路1做一个demo  代码如下 复制代码 <!DOCTYPE HTML> <html lang="zh-CN">     <head>         <me

jQuery Ajax Post 回调函数不执行问题的解决方法_jquery

今天在写一个检查用户名的功能时,使用的是jQuery.post( url, [data], [callback], [type] )这个函数,但是发现其中的回调函数不能执行. 先来看看我的代码: 前台代码: <script type="text/javascript"> function checkUser() { var user = $('#<%=txtUser.ClientID %>').val(); $.post('checkUser.ashx', {

Html中JS脚本执行顺序简单举例说明_javascript技巧

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

请教一个&amp;amp;lt;scirpt&amp;amp;gt;脚本语言小问题,在线等!很急!

问题描述 <scriptlanguage="javascript">functionsearchCheck(){varmyform=document.searchForm;if(myform.keyword.value==""){alert("请填写搜索关键字!");myform.keyword.focus();returnfalse;}if(myform.keyword.value=="<script>&quo