JavaScript面试题:深入理解基础类型、this、作用域与类型转换

需积分: 9 0 下载量 149 浏览量 更新于2024-08-05 收藏 13KB MD 举报
本文档是一份关于JavaScript高级面试题的参考资料,主要聚焦于第二阶段面试中常见的核心概念和技术问题。以下是详细的内容概览: 1. JavaScript基本类型: - JavaScript中的基本类型包括:字符串(`string`)、数字(`number`)、布尔值(`boolean`)、`undefined`和`null`。这些类型是原始的、不可变的,并且在内存中占用固定大小。 2. null与undefined的区别: - `null`表示一个空对象指针,通常用来表示没有值或空对象,而`undefined`表示未定义或不存在的变量。`typeof null`返回`"object"`,而`typeof undefined`返回`"undefined"`。数值上,`null`转换为0(==0),`undefined`转换为`NaN`(Not-a-Number)。 3. 理解NaN: - `NaN`是JavaScript特有的值,表示非数字,如除以零或无效的数值运算结果。`NaN`的特性在于任何与之比较的操作都返回`false`,包括`isNaN(NaN)`本身。 4. this的使用和理解: - `this`关键字在JavaScript中是动态绑定的,取决于函数调用的方式。在全局作用域中,`this`指向全局对象(浏览器中通常是`window`)。在函数内部,如果没有明确指定,`this`通常指代调用该函数的对象。 5. 类型转换: - JavaScript提供了多种类型转换方法,如`Number()`用于将非数字转换为数字,`parseInt()`和`parseFloat()`用于解析字符串为整数和浮点数。字符串可以通过`toString()`和`String()`进行转换,布尔值转换涉及空值、`0`和`null`等,它们会转换为`false`。 6. 值传递与引用传递: - JavaScript中的赋值分为值传递(基础数据类型,如数值、字符串)和引用传递(复杂数据类型,如对象和数组)。值传递是独立的副本,修改一个不会影响另一个;引用传递则是地址的拷贝,修改其中一个会改变其他引用到同一内存地址的变量。 7. JavaScript作用域的理解: - 作用域定义了变量的作用范围和可见性: - 全局作用域:在整个代码范围内可见,但可被局部作用域覆盖。 - 局部作用域:函数内部声明的变量只在函数内部有效,可以有块级作用域(ES6引入的let和const)和函数作用域。 - 块级作用域确保了变量仅在创建它们的代码块(花括号`{}`)内部可用,这有助于避免命名冲突和提高代码的可读性。 这份文档对于准备JavaScript面试者来说非常有价值,涵盖了基础语法、数据类型、作用域规则以及常见的面试陷阱,深入理解这些问题对于提升编程能力和面试表现至关重要。