JavaScript基础练习_day10
### JavaScript基础练习_day10知识点解析 #### 一、题目背景 本练习旨在帮助初学者掌握JavaScript的基础概念,尤其适合那些刚开始接触前端开发的同学。题目将重点围绕JavaScript的基础知识点进行展开,并随着练习的深入逐步增加难度。 #### 二、代码分析 在本节中,我们将逐一分析题目中给出的代码片段,并解释每一段代码背后的原理。 ##### 1. 作用域与`this` ```javascript var name = "Window"; var object = { name: "Object", getName: function () { return function () { return this.name; }; } }; // 错误的赋值方式 object.getName = function () { return function () { return this.name; }; }; object.getName() = function () { return this.name; }; object.getName()() = "Window"; // 此处实际无法执行 // 正确的赋值方式 object.getName = function () { var that = this; return function () { return that.name; }; }; object.getName()() = "Object"; ``` **分析**: - **错误赋值方式**:在第一种情况下,`this`指向的是全局对象`window`,因此输出`"Window"`。但是这种方式的赋值本身就是不正确的,因为`getName`方法不应该被赋值为另一个函数,而应该是调用它。 - **正确赋值方式**:通过定义一个变量`that`来保存当前上下文中的`this`,即`object`对象,这样无论在哪里调用返回的匿名函数,`that`始终指向`object`,从而输出`"Object"`。 ##### 2. IIFE (立即执行的函数表达式) **IIFE的作用**: - 模拟私有作用域:在JavaScript中没有真正的私有成员,IIFE可以用来创建私有的变量或函数,这些变量或函数不会污染全局命名空间。 - 即时执行:函数一旦定义就会被立即执行。 - 节省内存:对于只需要执行一次的函数,可以通过IIFE的形式立即执行并释放内存。 **IIFE的声明方法**: ```javascript (function functionName(形参) { // your code })(实参); ``` 例如: ```javascript (function myFunc() { console.log("Hello World!"); })(); ``` ##### 3. 变量声明顺序 ```javascript console.log(a); // Uncaught ReferenceError: a is not defined console.log(typeof a); // Uncaught ReferenceError: a is not defined let a = 1; ``` **分析**: - 在变量声明之前就尝试访问变量会导致`ReferenceError`。 - `let`声明的变量存在提升现象,但在变量未被初始化之前就访问它会抛出错误。 ##### 4. 默认参数 ```javascript function foo(x = y, y = 2) { return x + y; } foo(); // Uncaught ReferenceError: y is not defined function bar(x = "2", y = +x) { return x + y; } bar(); // "22" ``` **分析**: - 第一个例子中的默认参数`x = y`会导致`ReferenceError`,因为`y`在此时还没有被定义。 - 第二个例子中的`y = +x`会将字符串`"2"`转换为数字`2`,然后进行加法运算得到`"22"`。 ##### 5. 作用域问题 ```javascript function bar(x, y) { let x = x.toUpperCase(); return x; } bar("hello", "world"); // Uncaught SyntaxError: Identifier 'x' has already been declared ``` **分析**: - 在函数内部重新声明了一个名为`x`的变量,这与函数参数`x`冲突,导致`SyntaxError`。 #### 三、总结 通过以上对各个代码片段的分析,我们可以看出JavaScript的一些核心特性,如作用域、`this`绑定规则、IIFE的作用和用法、变量声明顺序以及默认参数等。这些基础知识对于理解和编写高效的JavaScript代码至关重要。随着练习的深入,我们将会遇到更多复杂的概念和技术,进一步巩固我们的编程技能。
- 粉丝: 95
- 资源: 14
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助