- 1. JavaScript 中声明变量的关键字有哪些?它们的区别是什么?JavaScript 中声明变量的方式有 3 种:var(ES5)、let 和 const(ES6) 三者的区别在以下几点:
- 2. 什么是变量提升?
- 3. JavaScript 中有哪几种数据类型?
- 4. null 和 undefined 的区别是什么?
- 5. 什么是自由变量?
- 6. NaN 是什么数据类型?它的特点是什么?
- 7. JavaScript 中数据类型之间的强制转换方法有哪些?
- 8. == 和 === 的区别是什么?
- 9. typeof 的作用是什么?它的返回值有哪些?
- 10. JavaScript 中哪些数据经过 Boolean() 转换后的值为 false?
- 11. 下面代码的输出是什么?( B )
1. JavaScript 中声明变量的关键字有哪些?它们的区别是什么?JavaScript 中声明变量的方式有 3 种:var(ES5)、let 和 const(ES6) 三者的区别在以下几点:
- 作用域(作用范围):
- var 声明的变量,其作用范围由函数来划分,即函数作用域;
- let 和 const 声明的变量,其作用范围由大括号 {} 来划分,即块级作用域;
- 变量提升:
- var 声明的变量存在变量提升;
- let 和 const 声明的变量不存在,因为暂时性死区。
- 重复声明:
- var 声明的变量允许重复声明(后面的声明会覆盖前面的声明);
- 在同一作用范围内,let 和 const 声明的变量不允许重复声明;
重新赋值:
- var 和 let 声明的变量允许通过重新赋值来更改变量值;
- const 声明的变量不允许重新赋值,因此 const 声明的变量也可以称之为「常量」。
2. 什么是变量提升?
浏览器解析代码的过程主要分为两个部分:编译和执行。
其中编译也叫做「词法解释」或「预解析」,在这个阶段所有代码都还没有开始执行,但浏览器会对当前作用域中的代码进行解析,并在解析过程中找到所有通过 var 关键字声明的变量,然后将这些变量的声明全部提升到当前作用域的顶部,而变量的赋值留在原位置。这个过程,就叫做「变量提升」。
等编译阶段完成后,才开始进入代码执行阶段,浏览器会按照编译之后的顺序依次执行代码。3. JavaScript 中有哪几种数据类型?
6+1,即 6 种基本数据类型 + 1 种引用数据类型
基本数据类型:number、string、boolean、null、undefined、Symbol(ES6 新增)、BigInt(ES10 新增)
-
4. null 和 undefined 的区别是什么?
null 是一个空对象指针,表示”没有对象”,即该处不应该有值;
undefined 表示”缺少值”,就是此处应该有一个值,但是还没有定义;
5. 什么是自由变量?
在当前作用域以外声明的变量,对于当前作用域来说,这个变量就是自由变量。
6. NaN 是什么数据类型?它的特点是什么?
NaN 表示非数字,属于 number 类型。它的特点主要体现在以下两点:
任何涉及到 NaN 的运算,结果都会返回 NaN;
-
7. JavaScript 中数据类型之间的强制转换方法有哪些?
parseInt()、parseFloat()、Number():强制转换为 number 类型,其中 parseInt() 转换为整数、parseFloat() 转换为浮点数(小数);
- String()、toString():强制转换为 string 类型;
-
8. == 和 === 的区别是什么?
== 在进行比较时会对数据类型进行自动转换,而 === 不会。因此 === 在执行效率上比 == 更高。
9. typeof 的作用是什么?它的返回值有哪些?
typeof 用于判断数据所属类型。
它的返回值是一个字符串,有 6 种取值:”string”、”number”、”boolean”、”undefined”、”object”、”function”。10. JavaScript 中哪些数据经过 Boolean() 转换后的值为 false?
11. 下面代码的输出是什么?( B )
console.log(typeof typeof 1);
A: “number”
- B: “string”
- C: “object”
- D: “undefined”