在看了几本书之后的一些理解和自己的想法。 作用域,变量的作用范围 在ES6之前 变量的声明 只有var可以声明变量属于某个作用域,并且,也只有全局作用域和函数作用域。 (没有var声明的变量,属于全局作用域,在全局作用域里声明的变量,函数会成为全局的属性) 所有的变量,不是全局作用域的,就是函数作用 ...
分类:
编程语言 时间:
2017-07-15 17:49:57
阅读次数:
188
1、var在声明所在的函数作用域内有效。 function(){} let与const都是只在声明所在的块级作用域内有效。{} 2、var与let声明的变量可以改变,值和类型都可以改变,没有限制。 const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。 ...
分类:
其他好文 时间:
2017-07-14 22:13:22
阅读次数:
125
缓存变量 DOM遍历是昂贵的,所以尽量将会重用的元素缓存。 避免全局变量 jQuery与javascript一样,一般来说,最好确保你的变量在函数作用域内。 使用匈牙利命名法 在变量前加$前缀,便于识别出jQuery对象。 使用 Var 链(单 Var 模式) 将多条var语句合并为一条语句,我建议 ...
分类:
Web程序 时间:
2017-07-13 22:42:38
阅读次数:
213
js:闭包 var getNum; function getCounter() { var n = 1; var inner = function () {return n++; } console.log(n); return inner; } //第一步 getNum = getCounter( ...
分类:
Web程序 时间:
2017-07-13 20:32:56
阅读次数:
227
1、JS作用域 在ES5中,js只有两种形式的作用域:全局作用域和函数作用域,在ES6中,新增了一个块级作用域(最近的大括号涵盖的范围),但是仅限于let方式申明的变量。 2、变量声明 3、函数声明 4、变量提升 a情形 b情形 c情形 从上面可以看到,b情形和c情形为什么不同于a情形,就是因为变量 ...
分类:
Web程序 时间:
2017-07-13 00:48:27
阅读次数:
190
一、let命令是es6新增的特性,作用与var命令类似,声明变量,不同之处在于声明的变量的作用域为块级作用域。引入let后带来了很多新的特性。 1作用域,es5之前之后函数作用域和全局作用域,let的引入带来了块级作用域,块级作用于会带来很多新的改变。 2一个需要了解的是“暂时性死区”,比如在全局变 ...
分类:
其他好文 时间:
2017-07-12 12:06:49
阅读次数:
110
面向对象、内存模型、动态绑定、上下文,上下文无关、运行时。hook注入。函数作用域、访问控制。返回类型、栈帧。动态路由转化为静态绑定,将运行时工作转移到编码时。类别函数追加。编译时object转class结构。 内存管理。 数组、字段、崩溃统计。 编码时、编译时、运行时。 ...
分类:
其他好文 时间:
2017-07-07 18:17:21
阅读次数:
166
上面标签里若不使用bind的话,点击p标签会报错,因为clickHandler运行时this不指向p标签,若要指向p标签,就需要bind绑上。 其实有时候不用bind改变函数作用域也没问题,哪种情况呢,就是clickHandler定义里不涉及到this指向,如上面的clickHandler里改成co ...
分类:
其他好文 时间:
2017-07-01 01:00:18
阅读次数:
218
什么是闭包?我们先来看一段代码: 再来看一段代码: 什么是闭包?这就是闭包! 有权访问另一个函数作用域内变量的函数都是闭包。这里 inc 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。 再来看一段代码: 看看是怎么执行的: var c = a(),这一句 a()返回的是函数 inc,那 ...
分类:
Web程序 时间:
2017-06-27 01:00:31
阅读次数:
282
(function( window, undefined ) { var jQuery = ... // ... window.jQuery = window.$ = jQuery;})(window);1)为什么要创建这样一个自调用匿名函数 ?通过创建一个自调用匿名函数,创建了一个特殊的函数作用域 ...
分类:
其他好文 时间:
2017-06-26 14:59:34
阅读次数:
145