JavaScript
AlexHSL
这个作者很懒,什么都没留下…
展开
-
关于this
this的四种绑定方式 默认绑定 //独立函数调用时绑定 function foo(){ "use strict"; console.log(this.a); } var a=2; foo();//TypeError: this is undefined function foo(){ //"use strict"; console.log(this.a); } var a=2; foo();//2 隐式绑定 绑定对象链最后一层的this 隐式丢失原创 2020-10-22 21:14:09 · 123 阅读 · 0 评论 -
第五章 作用域闭包
第五章 作用域闭包 建议let+块作用域 函数可以记住并访问所在的词法作用域时,就产生了闭包 闭包可以用来实现模块 例子代码在下面 var test = function coolModule() { var something = "cool"; var another = [1, 2, 3]; function doSomething() { console.log(something); } function doAnother() {原创 2020-10-19 21:55:26 · 112 阅读 · 0 评论 -
第四章 提升
第四章 提升 作用域内,先声明再赋值 函数声明在先,变量声明在后 函数表达式,相当于赋值操作,不会被提升 具名函数相当于给匿名函数在自己的作用域内赋值 重复的变量声明会被忽略,后面的函数声明可以覆盖前面的变量或函数声明 避免在块内声明函数 不要试图用条件判断控制函数声明,这样做函数无法被声明 ...原创 2020-10-19 20:09:57 · 108 阅读 · 0 评论 -
第三章 函数作用域和块作用域
第三章 函数作用域和块作用域 函数声明和函数表达式 如果function是声明的第一个词,就是函数声明,否则就是函数表达式 函数表达式的作用 创建一个作用域,并且不会在全局作用域产生额外的标识符 匿名函数缺点 调试困难(栈追踪不显示函数名) 引用自身只能使用已过期的arguments.callee(为什么引用自身?) 递归调用 事件触发后,事件监听器解除绑定(如何绑定?) https://www.cnblogs.com/lqi57/p/12499811.html 可读性差 建议行内函数表达式原创 2020-10-19 15:12:47 · 129 阅读 · 0 评论 -
第二章 词法作用域
第二章 词法作用域 变量遮蔽 高级作用域的变量会被低级作用域的变量遮蔽,可以访问全局作用域的被遮蔽变量,其他变量一旦被遮蔽,将无法访问 eval&with 在任何情况下,都应该尽量避免使用eval和with 严格模式下,eval在运行时有自己的作用域 eval可以用于动态生成代码 eval唯一的作用就是可以用来计算表达式的值,在函数式编程中起到作用,除此之外,eval和with不应当出现在代码中 ...原创 2020-10-19 14:28:48 · 87 阅读 · 0 评论 -
第一章 什么是作用域
第一章 作用域是什么 前言 正在学习js,记录一下笔记 有状态 vs. 无状态 什么是状态,可以参考https://cloud.tencent.com/developer/article/1620559 动态语言 vs. 静态语言 js不是动态语言,它是编译语言,只不过大多数情况下js是编译后立即执行的,而且相对其他编译语言,它不是提前编译的,编译结果也不能在分布式系统中移植 js的编译特点 var a=2;不是一次编译动作,而是两个动作var a和a=2 1)如果没声明a,声明,否则忽略var a;原创 2020-10-19 11:10:32 · 98 阅读 · 0 评论