JS for循环绑定事件问题以及闭包
 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>for与onclick配合</title>
    <script type="text/javascript">
    window.onload=function(){
        var btn=document.getElementsByTagName("input");
         for(var i=0;i<btn.length;i++){
         btn[i].onclick=function(){
                alert(this.value);
           }    
    }
}
    </script>
</head>
<body>
<input type="button" value="for循环"/>
<input type="button" value="事件处理"/>
<input type="button" value="弹窗显示"/>
</body>
</html>

这段程序在点击了相应的按钮后会显示相应的value值。
但是为什么把alert里改成i后,不管点哪个都显示3,而不是对应的0,1,2呢?
既然i值都是3,那是怎么能正常显示出对应的value的。

7个回答

this就是当前的button对象,直接alert i只能得到for循环后的,要做闭包指向当前执行到的i值

         window.onload = function () {
            var btn = document.getElementsByTagName("input");
            for (var i = 0; i < btn.length; i++) {
                btn[i].onclick = (function (i) {
                    return function () { alert(this.value+"|"+i); }
                })(i);
            }
        }
qq_23140091
Stahuf for循环是在页面加载完后,还没有点击按钮,他自己就已经执行了一遍了,所以alert(i)才会出现3的吗?
3 年多之前 回复
qq_23140091
Stahuf 那onclick和i没有关系,那么btn[i].onclick的意义就仅仅是通过循环给每一个对象都绑定事件而已,就不用自己敲代码一个个绑定事件了呗,不知道我这样理解有没有错
3 年多之前 回复
showbo
支付宝加好友偷能量挖 btn.length的值
3 年多之前 回复
showbo
支付宝加好友偷能量挖 回复Stahuf: xxx.onclick=function函数体里面的this就是当前点击的对象,这个是规定。和i第几没关系,你函数题里面如果使用到i那就是btn.length的中
3 年多之前 回复
qq_23140091
Stahuf 我有一个地方没有理解就是:this表示当前对象,但是有三个对象,他怎么知道是哪一个对象?我理解的是btn是一个对象数组,this应该要通过btn[i].onclick里面的i来确定是哪一个对象(btn[0] btn[1] btn[2]分别对应一个对象),但是i实际是3,btn[3]是不存在的,所以点击按钮时怎么还能显示对应value的值?
3 年多之前 回复

<!DOCTYPE html>



for与onclick配合
<br> window.onload=function(){<br> var btn=document.getElementsByTagName(&quot;input&quot;);<br> for(var i=0;i<btn.length;i++){<br> btn[i].onclick=function(){<br> alert(this.value);<br> } <br> }<br> }<br>






这是代码
for (var i = 0; i < btn.length; i++) { }   <====>   var i = 0; for(i;i<btn.length;i++){ }
在onload里面,你可以把for循环中的i当做一个局部全局变量,i在栈内存中有下面的变化:
在栈中寻找是否存在值为0的指针,如果有,让i指向这个地址,如果没有,创建一个,然后
让i指向它,当循环一次向后执行时,i依次指向了不同的值,但是这个变化过程中i只是引用
着不同的地址,当循环执行完,当然,i保存了3, alert(i);当然会弹出3,为了解决它,可以
使用闭包:
btn[i].onclick = (function (i) {
                return function () { alert(this.value+"|"+i); }
            })(i);

首次,你要明白作用域的问题,alert中的这个this指向的是什么,这里的this指向的就是botton,其次,你要明白匿名函数什么时候执行,你的这段
代码中的匿名函数是在整段代码执行完了之后才执行的,所以i不会是当前你点击的这个i,最后,你要明白for循环的执行机制,这个i为什么是3,因为for(var i=0;i<btn.length;i++)的最后一次i++让i变成了3,所以你alert的那个时候i已经变成了3。
解决方法上面已经有人做出了回答,这个是经典的闭包问题,试着自己理解一下

理解this和执行时机 这个问题就解决了;还有啊好像在es6之前js没有块级作用域

for(var i=0;i<btn.length;i++){
(function(i){ btn[i].onclick=function(){
alert(i);
}})(i)
}


var btn=document.getElementsByTagName("input");这句话有问题,页面里有三个input,由于js不知道你要执行哪一个,js会依次执行所有的input,每当执行下一个的时候就会把上一个覆盖掉,所以当你执行到最后一个的时候就会把前面的全部覆盖掉,正常情况下你应该给这些input分别设置id,这些id可以有规律。然后
document.getElementsById("想要执行的input的id")就行了

qq_23140091
Stahuf 但是一个正规的页面上有好些个按钮,用ById的方法的话,每个input对象都要写一次方法来获取,代码太冗长了吧,没有循环方便吧
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
闭包问题,循环里面有函数
![![图片说明](https://img-ask.csdn.net/upload/201707/17/1500262374_508455.png)图片说明](https://img-ask.csdn.net/upload/201707/17/1500262359_470953.png) 我想在for循环里面 给函数 传参数i 是闭包问题 为什么我打出来的是undefind
关于js循环闭包的问题?
for (var i=1;i<=5;i++){ setTimeout(function timer(){ console.log(i); },i*1000); } 书上说:上面这段代码的预期是分别输出1-5,每一秒一次,每次一个。但实际上,代码在运行时会以每秒一次的频率输出五个6。 请问为什么会输出5个6,循环条件不是i<=5嘛
为什么我的js代码中的for循环只执行最后一次,是闭包造成的么,怎么解决吖
save.onclick=function(){ for (var i = 1; i < tb.getElementsByTagName('tr').length; i++) { var tds=tb.getElementsByTagName('tr')[i].getElementsByTagName('td'); database.transaction(function(fx){ fx.executeSql( "insert into class (id,name,age,sex)values(?,?,?,?)", [tds[0].innerHTML,tds[1].innerHTML,tds[2].innerHTML,tds[3].innerHTML], function(){ alert("insert success!!!"); }, function(){ alert("insert false!!!"); } ) }) } }
一个简单的实际例子——循环中的 JavaScript 闭包
``` var funcs = [];// let's create 3 functionsfor (var i = 0; i < 3; i++) { // and store them in funcs funcs[i] = function() { // each should log its value. console.log("My value: " + i); };}for (var j = 0; j < 3; j++) { // and now let's run each one to see funcs[j]();} ``` 报告的结果如下: My value: 3 My value: 3 My value: 3 然而我希望它输出: My value: 0 My value: 1 My value: 2 当使用event listener导致函数运行的延迟时,也会出现同样的问题: ``` var buttons = document.getElementsByTagName("button");// let's create 3 functionsfor (var i = 0; i < buttons.length; i++) { // as event listeners buttons[i].addEventListener("click", function() { // each should log its value. console.log("My value: " + i); });} <button>0</button><br /><button>1</button><br /><button>2</button> ``` ... 或者异步代码,例如使用 Promises: ``` // Some async wait functionconst wait = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms)); for (var i = 0; i < 3; i++) { // Log `i` as soon as each promise resolves. wait(i * 100).then(() => console.log(i));} ``` 解决方案是什么?
js闭包的关于变量的问题
在闭包里修改其包含函数的某个变量a的值,实际上这个变量a的值被改变了吗?
闭包以及li标签快之间的空间处理问题
两个问题 第一个 下面这个闭包 对每个元素绑定对时候是绑定的i还是绑定的具体的数 具体一点说就是 绑定的是colors[0][i] 等我点击的时候i是多少就执行多少 还是说我绑定的时候 循环里当i=0时 我就绑定 colors[0][0] i=1时我就绑定colors[0][1] 这里不用let 用立即执行函数应该怎么写? ![图片说明](https://img-ask.csdn.net/upload/201805/04/1525416575_858718.png) 第二个 为什么 中间绿色选项快速点击的时候会出现文字选择的效果 我把div弄成一行就没有了 这里应该怎么处理? ![图片说明](https://img-ask.csdn.net/upload/201805/04/1525416807_49463.png) ``` <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>原生js小demo集合</title> </head> <style> body{ background-color: lightgreen; } .container{ width: 500px; margin: 20px auto; } .control{ margin: 0 auto; } .control .button{ display: inline-block; width: 20px; height: 20px; margin-right: 5px; } .control .button.red{ background-color: red; } .control .button.red.checked{ background-color: white; box-shadow: 0 0 0 6px red inset; } .control .button.green{ background-color: green; } .control .button.green.checked{ background-color: white; box-shadow: 0 0 0 6px green inset; } .control .button.black{ background-color: black; } .control .button.black.checked{ background-color: white; box-shadow: 0 0 0 6px black inset; } ul{ margin-top: 5px; padding: 0; border:1px solid white; list-style-type: none; display: flex; background-color: green; } li{ height:30px; line-height: 30px; display: inline-block; flex: 1; border-right: 1px solid white; text-align: center; } li:last-child{ border-right: none; } li a{ text-decoration: none; color: white; } </style> <body> <div class="container"> <div class="control"> <div class="button red"></div> <div class="button green"></div> <div class="button black"></div> </div> <ul> <li><a href="javascript:;">新闻</a></li> <li><a href="javascript:;">娱乐</a></li> <li><a href="javascript:;">体育</a></li> <li><a href="javascript:;">电影</a></li> <li><a href="javascript:;">音乐</a></li> <li><a href="javascript:;">旅游</a></li> </ul> </div> <script> var colors = [['red','green','black'],['pink','lightgreen','lightslategrey']]; var buttons = document.getElementsByClassName("button"); buttons[1].classList.add('checked'); var ul = document.getElementsByTagName('ul')[0]; //对于每个button都要绑定一个事件,1.改变导航的背景色为button的颜色,2.改变body的背景色为button颜色的浅色 for(let i =0;i<buttons.length;i++){ buttons[i].addEventListener('click',function (e) { ul.style.backgroundColor=colors[0][i]; document.body.style.backgroundColor=colors[1][i]; //删除buttons的checked类,在点击元素上增加checked类 buttons[0].classList.remove('checked'); buttons[1].classList.remove('checked'); buttons[2].classList.remove('checked'); e.target.classList.add('checked'); }) } </script> </body> </html> ```
JavaScript的闭包的相关问题
&nbsp;&nbsp;&nbsp; 最近在学习《JavaScript高级程序设计》,其中关于闭包的两个例子,我照着书中的例子运行时,浏览器不打印也不报错,由于我是初学,才疏学浅,发现似乎是createFunctions()的循环不太对,但也没有调试成功,现在贴出来,还望大家共同讨论,各抒己见。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 下面我把两个例子贴出来,希望有兴趣的朋友能够回复,看看是什么原因造成的: <br />&nbsp;&nbsp;&nbsp;&nbsp; 例子1: <br /><pre name="code" class="java"> &lt;html&gt; &lt;head&gt; &lt;title&gt;对象&lt;/title&gt; &lt;/head&gt; &lt;script type="text/javascript"&gt; function createFunctions(){ var result = new Array(); for(var i=0;i&lt;10;i++){ result[i] = function(){ return i; }; } return result; } var funcs = createFunctions(); //分别输出0、1、2……9 for(var i=0;i&lt;funcs.lenght;i++){ document.write(funcs[i]() + "&lt;br/&gt;"); } &lt;/script&gt; &lt;body&gt; &lt;/body&gt; &lt;/html&gt; </pre> <br /> <br /> <br />例子2: <br /> <br /><pre name="code" class="java"> &lt;html&gt; &lt;head&gt; &lt;title&gt;对象&lt;/title&gt; &lt;/head&gt; &lt;script type="text/javascript"&gt; function createFunctions(){ var result = new Array(); for(var i=0;i&lt;10;i++){ result[i] = function(num){ return function(){ return num; }; }(i); } return result; } var funcs = createFunctions(); //分别输出0、1、2……9 for(var i=0;i&lt;funcs.lenght;i++){ document.write(funcs[i]() + "&lt;br/&gt;"); } &lt;/script&gt; &lt;body&gt; &lt;/body&gt; &lt;/html&gt; </pre> <br /> <br /> <br />&nbsp;&nbsp;&nbsp; 另外,我对闭包的概念理解得也不透彻,不太明白闭包的定义:“闭包是指有权访问另一个函数作用域中的变量的函数:,那么在什么情况下使用闭包呢? <br />&nbsp;&nbsp;&nbsp;&nbsp; 还有匿名函数的销毁,有一个疑问:匿名函数用完后,必须置为null吗?是因为闭包对活动对象的引用造成的吗? <br />&nbsp;&nbsp;&nbsp;&nbsp; 期待同仁赐教,不胜感激。
关于js闭包问题,求教~
看到一篇文章,其中有一个关于闭包的例子如图~请问result();等同于f1();吗?为什么下边说f2被赋给了一个全局变量?
JavaScript闭包问题
[code="text/javascript"] function makeProperty(o, name) { var value; o["get" + name] = function() { return value; }; o["set" + name] = function(v) { value = v; }; } var o = {}; makeProperty(o, "Name"); o.setName("Frank"); alert(o.getName()); (function(o) { alert(1); for(a in o) { alert(a + " = " + o[a]); } })(o); [/code] 这段代码中的那个对象的value值在那里存放着,写的测试代码并没有输出出来,但是用o.getName(),确可以得到!帮忙解答一下,不胜感激。
请问一下js闭包的问题
![图片说明](https://img-ask.csdn.net/upload/201708/31/1504171496_659256.png) 请问为什么要在匿名函数内又创建返回一个闭包函数,而不能直接在匿名函数中返回num??
Javascript闭包与python 闭包
<p>下列代码很好的展示了JS函数的闭包</p> <p> </p> <pre name="code" class="java">var f=[]; for(var i=0;i&lt;10;i++) f.push(function(){alert(i);}); f[0]();</pre> <p> </p> <p><span style="color: #ff0000; font-size: medium;">打印 10.因为 所有f函数都共享同一个作用域window,调用时查找的是同一个window的i,即循环结束后的i<br></span> </p> <p> </p> <p>解决方法很多 ,其中之一是  i 复制到 函数最底层作用域中。</p> <p> </p> <pre name="code" class="js">var f=[]; for(var i=0;i&lt;10;i++) f.push(function(i){return function(){alert(i);}}(i)); f[0](); </pre> <p> </p> <p>据某人说 : perl python 刚开始的表示就可以输出0 ,且有块作用域 ,我觉得 javascript 更合理啊,按照perl python 的做法 ,岂不是 定义函数时把函数里用到的外部变量 全部给自己做copy ???</p> <p> </p> <p>不懂perl,python ,是真的这样么</p> <p> </p> <p> </p> <p>参考 :</p> <p> </p> <h3 class="type_reprint" title="转载"> <a href="../../blog/356700">JavaScript对象模型-执行模型</a> </h3>
javascript闭包问题!!
``` function foo(){ var result=new Array(); for(var i=0;i<10;i++){ result[i]=function(){ return i; }(); } return result; } console.log(foo()) ``` 求大神给出结果,书上说全是9,对闭包懵逼了
关于闭包和循环加触发事件 产生内存泄露问题
<div class="content"> <p>我的代码是这样写的</p> <p>......</p> <p>        ddlstart_f.onblur=function(y1){return function(){checkNum(1,y1);}}(i);</p> <p>......</p> <p>据说这样写会产生内存泄露问题,当页面关闭时。这部分内存会被释放吗。</p> <p>ddlstart_f控件是在table中动态生成的。如果这部分内存不会被释放,</p> <p>我在onunload事件中把整个table删除掉可不可以。</p> <p>请赐教。</p> </div>
关于javascript闭包的一点疑问
闭包存储局部变量的机理是什么?它如何存储的?比如如下一个闭包 ``` function test(){ var num = 10; return function(){ num++; return num; }; }; var n = test(); alert(n()); //返回11 alert(n()); //返回12,实现了累加 alert(n()); //继续累加 ``` 第二次alert(n())通过闭包实现了累加,但是这个局部变量num是如何存储在内存里的,以至于可以持续调用?机理是什么?局部变量不是当函数调用完后就销毁了吗
动态规划算法闭包问题
0/1闭包问题n=5 w={7,3,6,7,4}v={8,3,10,4,6},w=15,写出动态规化 详细过程。越具体越好
javascript闭包函数问题
这里面的 var x有什么用的 var b =(function(){function x(){} return new x()}(); var x =(function(){function x(){} return new x()}(); 为什么这两段代码格式运行起来结果不同。
python闭包问题,关于字典的解包
``` import time def decorate(func): print("我是外层") def wrapper(*num,**kwargs): print("正在校验中......") print(num,kwargs) print(**kwargs) time.sleep(2) print("校验完毕") func(*num,**kwargs) return(wrapper) @decorate def f1(num): print("---f1---",num) f1(18) @decorate def f2(a,b): print("---f2---",a,b) @decorate def f3(a,b="333"): print("---f3---",a,b) list2=["111","222","abc123"] # f2(list2[0],list2[1]) f3(list2[2],b="4444") ``` 代码如上,就是一个简单的万能装饰器的应用,这里主要说下f3这个函数,我在调用这个函数的时候,实际上就是调用的wrapper,**kwargs就把b="4444"装包成了一个字典,然后执行func的时候又把这个字典解包,这里就有一个问题,既然可以解包,那我在wrapper函数中加了一个print(**kwargs),就是想看下解包出来的东西输出是否是b="4444"这样的,但是加上这个以后就会报错,请问是为什么,我主要想看下,假如字典解包,他是一个什么样的格式传递的值的,谢谢
js闭包中this指向的问题
下面是百度今年的一个笔试题: var myObject = { foo:"bar", func: function() { var self = this; console.log("outer func: this.foo = " + this.foo); console.log("outer func: self.foo = " + self.foo); (function (){ console.log("inner func: this.foo = " + this.foo); console.log("inner func: self.foo = " + self.foo); }()); } } myObject.func(); 结果是 bar bar undefined bar 关于第三个undefined我是这样理解的:func是myObject对象的属性方法,所以其内部this指向myObject对象本身。而此属性方法内部的匿名立即执行函数是独立的,其this指向自身的执行上下文,引用不到外部的foo,所以是undefined。但由于作用域链使用self可以通过self引用到外部,所以第四个是bar。 我是这样理解的,并且我做了个推论: function outer(){ this.i = 10; alert(this.i); (function(){ alert(this.i); }()); }; outer(); 按道理第二次弹出对话框是undefined才对,可是它却是10!它这里怎么又能通过this引用外部的i了呢?why? 请大神不吝赐教!
关于js闭包的疑问,求大神帮忙
function createFunction(){ var result = new Array(); for(var i=0;i<10;i++){ result[i]=function(){ return i; }; } return result; }; alert(createFunction()); 为什么输出是function(){ return i; } 这个闭包访问不到外包的函数的变量i?
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
python 简易微信实现(注册登录+数据库存储+聊天+GUI+文件传输)
socket+tkinter详解+简易微信实现 历经多天的努力,查阅了许多大佬的博客后终于实现了一个简易的微信O(∩_∩)O~~ 简易数据库的实现 使用pands+CSV实现数据库框架搭建 import socket import threading from pandas import * import pymysql import csv # 创建DataFrame对象 # 存储用户数据的表(...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
刷了几千道算法题,这些我私藏的刷题网站都在这里了!
遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...
JavaScript 为什么能活到现在?
作者 | 司徒正美 责编 |郭芮 出品 | CSDN(ID:CSDNnews) JavaScript能发展到现在的程度已经经历不少的坎坷,早产带来的某些缺陷是永久性的,因此浏览器才有禁用JavaScript的选项。甚至在jQuery时代有人问出这样的问题,jQuery与JavaScript哪个快?在Babel.js出来之前,发明一门全新的语言代码代替JavaScript...
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
吐血推荐珍藏的Visual Studio Code插件
作为一名Java工程师,由于工作需要,最近一个月一直在写NodeJS,这种经历可以说是一部辛酸史了。好在有神器Visual Studio Code陪伴,让我的这段经历没有更加困难。眼看这段经历要告一段落了,今天就来给大家分享一下我常用的一些VSC的插件。 VSC的插件安装方法很简单,只需要点击左侧最下方的插件栏选项,然后就可以搜索你想要的插件了。 下面我们进入正题 Material Theme ...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
相关热词 c#中dns类 c#合并的excel c# implicit c#怎么保留3个小数点 c# 串口通信、 网络调试助手c# c# 泛型比较大小 c#解压分卷问题 c#启动居中 c# 逻辑或运算符
立即提问