javascript中几个容易混淆的概念总结
需积分: 0 179 浏览量
更新于2020-12-09
收藏 54KB PDF 举报
1.
var name = "The Window";
var object = {
name : "My Object",
getName: function(){
return this.name;
}
};
这里的getName()方法只简单地返回this.name 的值。以下是几种调用object.getName()的
方式以及各自的结果。
object.getName(); //”My Object”
(object.getName)(); //”My Object”
(object.getName = object.getName)(); //”The Window”,在非严
JavaScript 中有几个核心概念容易引起混淆,包括`this`的指向、变量声明的重复与作用域、块级作用域以及闭包。以下是对这些概念的详细解释:
1. `this`的指向:
在JavaScript中,`this`的值取决于函数调用的位置,而不是函数定义的位置。在对象的方法中,`this`通常指向调用该方法的对象。例如,在`object.getName()`中,`this`指代`object`,所以`this.name`返回`"My Object"`。但在非严格模式下,如果函数被赋值给一个变量再调用,如`(object.getName = object.getName)()`,`this`将指向全局对象(在浏览器中通常是`window`),所以`this.name`返回`"The Window"`。
2. 变量声明的重复与作用域:
JavaScript中,变量在函数或全局范围内声明,而不是在块级作用域。这意味着即使在相同的范围内多次声明同一个变量,后续的声明也会被忽略,而不是抛出错误。例如,`outputNumbers`函数内的`var i`被重新声明,但实际只会使用第一次声明的`i`。为了模拟块级作用域,可以使用匿名函数,避免变量污染全局范围。
3. 块级作用域与函数表达式:
JavaScript的`function`关键字用于声明函数,这不同于函数表达式,后者可以用于创建匿名函数并在需要时执行。尝试在函数声明后面加括号会导致语法错误,因为解析器将其理解为函数声明的一部分。要创建一个立即执行的函数表达式,需在函数声明前后都加上括号,如`(function() { ... })()`。
4. 闭包与私有作用域:
闭包是一种特性,使得内部函数可以访问并操作其外部函数(包含作用域)的变量,即使外部函数已经执行完毕。在`outputNumbers`的例子中,匿名函数形成了一个闭包,可以访问`count`,但`i`在循环结束后不再存在,因为它只在匿名函数的作用域内有效。使用闭包可以在不污染全局作用域的情况下创建私有变量和函数,这对于大型项目尤其重要,可以避免命名冲突。
理解`this`的动态绑定、变量声明的作用域规则、块级作用域的模拟以及闭包的运用,是提升JavaScript编程技能的关键。正确使用这些概念可以帮助编写更健壮、可维护的代码。
weixin_38612527
- 粉丝: 5
- 资源: 954
最新资源
- Matlab simulink模型,单相光伏储能模型 可再生能源发电 超便宜超便宜太阳能发电 蓄电池储能 建模与仿真 可调节光照强度,采用MPPT电导增量法最大功率点跟踪 双向DC DC蓄
- 小程序项目-基于微信小程序的电影院票务系统(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的高校毕业论文管理系统小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的校园兼职系统(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的电影交流平台(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的校园订餐小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的校园二手交易平台小程序(包括源码,数据库,教程).zip
- pdf与office,word文件内容全文检索
- 小程序项目-基于微信小程序的个人健康信息管理小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的基于微信小程序图书馆座位再利用系统(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的新冠疫苗预约小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的校园商铺系统(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的高校餐厅食品留样管理系统(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的新生报到系统(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的驾校报名小程序(包括源码,数据库,教程).zip
- 小程序项目-基于微信小程序的学生选课系统(包括源码,数据库,教程).zip