在for循环中使用let时,结果如下 for内部定义的i在循环结束后不会覆盖外部的i 在for循环中使用var,且不控制i的作用域时,结果如下 第一个for循环内部定义的i并不会创建,而是直接使用外部中的i,故在循环结束时外部的i变为了5. 第二个for循环直接使用了外部的i 把第一个for循环存于匿名函数中,第二个for循环使用var创建变量i,结果如下 第一个for循环置于匿名函数,会创建一个在作用域在匿名函数的i,第二个for循环并未创建i而是直接对外部的i进行赋值 在for循环中使用va…
我们都知道函数中声明变量不用Var时这个变量会成为全局变量,但是并不是函数一开始执行就会把它变为全局变量,必须执行到这条语句. 看一段代码 function f(){    alert(a);    a = 3;}f(); //error: a is not defined 只有函数内部执行到a = 3时,a才会成为全局变量并且等于3,因为这个函数不可能执行到这句语句,所以error: a is not defined 再看一段代码 (function(){ bar(); bar=functio…
一. 立即执行函数 windows中有个name属性,name='' '' var 如果我们用var name 去声明,那就会改变windows中name的值(因为我们不是在函数作用域中声明的,所以会覆盖全局的值) 为了避免这种问题,通常我们写一个立即执行函数(可读性不高) const 同样,如果我们用const去声明,也会改变全局的name属性 我们把const声明写在大括号里面,就不会改变全局的name属性了 二. for循环 常见的for循环,console.log(i) 会输出10,wh…
var声明变量: var只有函数作用域,没有块级作用域 //函数作用域的表现 function test(){ var i =10; console.log(i); } test(); console.log(i); // i is not defined; //块级作用域对var没有约束 { var i = 10; console.log(i); } console.log(i); 从上面的代码可了解到,块级作用域对var是没有约束作用的. let声明变量: let与var不同,let是有块级…
初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript的闭包特性. 有个网友问了个问题,如下的html,为什么点击所有的段落p输出都是5,而不是alert出对应的0,1,2,3,4. 1.  <!DOCTYPE HTML> 2.  <html> 3.  <head> 4.  <meta charset="utf…
来源:http://www.108js.com/article/article1/10177.html?id=899 第一次接触这个问题还是在我刚开始学js的时候,当时就是一头雾水,时隔一年多了,突然又想起了这个问题,在这个春气盎然的周末,我就坐下来研究下并把结果和大家分享下: 先看代码:demo.html <!DOCTYPE HTML>  <html>   <head>    <meta charset="gbk"/>    <t…
今日处理项目中的一个循环,本来就是一个小小的for循环,后来发现该段程序出现了问题,仔细检查代码没有发现其中的错误.无奈只好叫来了老大帮忙.通过在模版中断点调试(该方式只能自己写debugger断点)我们找到了问题的所在.首先看我们的循环: for(var i =0, len = arr.length; i<len; i++){ console.log(arr[i]); for(var i=0; i<x.length; i++) { console.log(x[i]); } } 这是一个很简单…
<!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content="text/html; charset=utf-8"> <title>关于循环中索引的使用 - by 杨元</title> </head> <body> <h1>关于循环中索引的使</h1> <!--基础html框架-->…
使用Handlebars.js过程中,难免会使用循环,比如构造数据表格.而使用循环,又经常会用到索引,也就是获取当前循环到第几次了,一般会以这个为序号显示在页面上. Handlebars.js中获取循环索引很简单,只需在循环中使用{{@index}}即可. <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content="text/html; charset=utf-8"&…
jsrender中使用for循环数据时有时需要访问父级数据. 而jsrender在循环中的父级数据存放在隐藏属性parent.parent.data中,使用案例如下 {{:#parent.parent.data}} 具体使用案例如: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>嵌套循环使用#parent访问父级数据 --- by 杨元</titl…