JavaScript基础题集:变量作用域与函数调用理解

需积分: 1 0 下载量 108 浏览量 更新于2024-08-05 收藏 7KB TXT 举报
本周的练习题复习主要集中在JavaScript的基础概念上,特别是关于变量作用域、函数作用域、原型链以及条件语句的理解。让我们逐一解析每个题目背后的知识点。 1. **选择题 - 变量作用域与函数参数** 题目涉及了全局变量 `a` 和在函数内部对它的引用。在第一题中: - A选项:`console.log(a)` 在全局作用域和函数 `fn` 内部都执行,由于没有外部赋值,`a` 为 `undefined`。 - B选项:`vara` 是局部变量,在函数外部不可见,所以两次输出都是 `undefined`。 - C选项:函数内部的 `vara` 赋值覆盖了外部的 `a`,但 `fn()` 内部再赋值不会影响外部,所以两次输出分别为 `undefined` 和 `13`。 - D选项:无程序错误,因为变量声明和使用符合规范。 2. 第二题考察的是函数内部修改外部变量的问题: - 函数内 `a` 的赋值会改变全局的 `a` 值,因此最后输出 `13`。 3. 第三题中,函数 `fn` 内部再次声明 `a` 会创建一个新的局部变量,不影响外部的 `a`,输出保持不变。 4. **作用域链与条件语句**: 第四题中,`bar` 函数内部重新声明 `foo`,但 `if` 语句中的 `!foo` 检查的是原始全局变量 `foo`,因此 `foo` 的值为 `1`,输出结果为 `A`。 5. **嵌套函数与返回值**: 第五题考查嵌套函数的作用域和变量传递。`n` 在 `b` 函数内部增加后,外部函数 `a` 返回 `b` 函数,`c` 调用时 `n` 的值为 `10`,最终输出 `11`。 6. **函数参数与作用域**: 最后一道题涉及函数参数和全局变量。`test` 函数接受一个参数 `a`,但它有自己的作用域,不会影响全局变量 `a`,因此输出结果与 `a` 的初始值 `10` 相关。 总结这些题目,重点在于理解JavaScript的变量作用域规则(全局、局部、函数内部),原型链(对象属性继承),以及条件语句对变量的影响。通过解答这些问题,可以提升对JavaScript语言基本特性的掌握,并能处理更复杂的代码逻辑。