MST

星途 面试题库

面试题:JavaScript 中数据类型转换与变量声明的细节

请描述 JavaScript 中基本数据类型有哪些?当一个字符串变量 '123' 与数字 456 进行加法运算时,会发生怎样的数据类型转换?同时,用 let 和 var 声明变量有什么区别?
32.0万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. JavaScript基本数据类型
    • 数值(Number):包括整数和浮点数,如13.14等。
    • 字符串(String):由零个或多个字符组成的序列,用单引号、双引号或反引号包裹,如'hello'"world"`JavaScript`
    • 布尔值(Boolean):只有两个值truefalse
    • 空值(Null):表示一个空对象指针,只有一个值null
    • 未定义(Undefined):当一个变量声明但未赋值时,其值为undefined
    • 符号(Symbol):ES6 引入的新类型,代表独一无二的值。
    • 大整数(BigInt):ES2020 引入,用于表示大于2^53 - 1的整数。
  2. 字符串与数字加法运算的数据类型转换: 当字符串'123'与数字456进行加法运算时,JavaScript 会将数字456转换为字符串,然后进行字符串拼接。结果为'123456'。这是因为在加法运算中,如果其中一个操作数是字符串,JavaScript 会将另一个操作数也转换为字符串,以进行字符串拼接操作。
  3. let和var声明变量的区别
    • 作用域
      • var声明的变量具有函数作用域或全局作用域。例如,在函数内部使用var声明的变量,在整个函数内都可以访问,即使在声明之前使用(存在变量提升)。
      • let声明的变量具有块级作用域,只在{}块内有效。例如在if语句块、for循环块等内部使用let声明的变量,在块外部无法访问。
    • 变量提升
      • var存在变量提升,即变量可以在声明之前使用,其值为undefined。例如:
console.log(a); // undefined
var a = 1;
 - `let`不存在变量提升,在声明之前使用会报错,即所谓的“暂时性死区”。例如:
console.log(b); // ReferenceError: b is not defined
let b = 2;
  • 重复声明
    • var允许在同一作用域内重复声明同一个变量,后面的声明会覆盖前面的声明。例如:
var c = 3;
var c = 4;
console.log(c); // 4
 - `let`不允许在同一作用域内重复声明同一个变量,否则会报错。例如:
let d = 5;
let d = 6; // SyntaxError: Identifier 'd' has already been declared