在知乎上看到的有人发布的和javascript有关的试题,和大家分享下,虽然是N久前的事了,但这些题相当经典,不免让人觉得javascript真是门蛋疼的语言。 1. 代码如下: (function () { return typeof arguments; })(); A. “object” B. “array” C. “arguments” D. “undefined” 答案:A 2. 代码如下: var f = function g() { return 23; JavaScript是一种强大的、灵活的脚本语言,但它也有一些让人头疼的语法特性。以下是一些示例题目,它们展示了JavaScript中的一些不寻常的行为。 1. `typeof arguments` 的问题: 在JavaScript中,`arguments` 是一个类数组对象,它在函数内部提供对函数参数的访问。虽然它看起来像数组,但实际上它不是一个真正的数组。因此,`typeof arguments` 返回的是 "object",而不是 "array"。所以,正确答案是 A. “object”。 2. 函数名与变量名的混淆: JavaScript中的函数声明可以作为变量赋值,`typeof g()` 会返回 "function",因为 `g` 是一个函数表达式。因此,正确答案是 C. “function”。 3. 使用 `delete` 关键字: `delete` 用于删除对象的属性,但在这里它不能删除局部变量,所以 `x` 保持不变,其值为 1。因此,正确答案是 A. 1。 4. 类型转换的陷阱: 这个例子展示了JavaScript中的类型转换和自赋值操作。`typeof x` 会返回 "number",然后赋值给 `y` 和 `x`,所以 `x` 的最终值是 "number"。因此,正确答案是 B. “number”。 5. 自调用函数和`typeof`: 当调用函数返回一个值时,`typeof` 操作符会返回该值的类型,这里是 "number"。因此,正确答案是 A. “number”。 6. `this` 的指向问题: 在非严格模式下,`arguments[0]()` 调用 `foo.bar`,`this` 在函数内部指向全局对象(在浏览器中通常是 `window`),而不是 `foo` 对象。`foo.baz` 不存在于全局对象中,所以返回 `undefined`。因此,正确答案是 A. “undefined”。 7. `this` 的动态绑定: 类似于问题6,这里 `f = foo.bar` 后,`f()` 不再有 `this` 指向,所以它也返回 `undefined`。因此,正确答案是 A. “undefined”。 8. 复合赋值和函数表达式: 这里是一个函数表达式的分组运算符,它返回第二个函数 `g()` 的结果,即 2。因此,`typeof f` 会返回 "number"。所以,正确答案是 B. “number”。 9. 嵌套的函数表达式和条件语句: 在条件语句中声明函数不会改变外部变量 `x` 的值。`typeof f` 在这里会返回 "function",所以 `x` 的最终值是 "1function"。因此,正确答案是 C. “1function”。 10. 高级类型的表示和类型检查: `typeof` 对 `typeof x` 的值进行操作,`x` 是一个变量,所以 `typeof x` 返回 "string",然后这个字符串被放在数组中。数组的索引1对应的值是 "string"。因此,`typeof typeof x` 返回 "string"。正确答案是 B. “string”。 11. 对象属性的类型检查: 这个例子展示了对象属性的查找和 `typeof` 操作。`foo` 是一个对象,`foo.bar` 存在且等于 1,所以 `typeof foo.bar` 返回 "number"。因此,正确答案是 C. “number”。 这些题目揭示了JavaScript中的一些微妙和易错的特性,包括`typeof` 的行为、`this` 的动态绑定、函数表达式、变量作用域以及类型转换等。理解这些特性对于编写健壮的JavaScript代码至关重要。
- 粉丝: 1
- 资源: 914
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 章节1:Python入门视频
- 无需样板的 Python 类.zip
- ESP32 : 32-bit MCU & 2.4 GHz Wi-Fi & BT/BLE SoCs
- 博物馆文博资源库-JAVA-基于springBoot博物馆文博资源库系统设计与实现
- 旅游网站-JAVA-springboot+vue的桂林旅游网站系统设计与实现
- 小说网站-JAVA-基于springBoot“西贝”小说网站的设计与实现
- 游戏分享网站-JAVA-基于springBoot“腾达”游戏分享网站的设计与实现
- 学习交流-JAVA-基于springBoot“非学勿扰”学习交流平台设计与实现
- EDAfloorplanning
- 所有课程均提供 Python 复习部分.zip