返回

从理解变量提升到掌握类型转换

前端

[JS]08.变量提升&类型转换例子

变量提升和类型转换:

理解变量提升:

变量提升:在JavaScript中,变量的声明会自动提升到作用域的顶部,这个过程被称为变量提升。这导致在使用变量之前,即使没有明确声明,也可以访问变量。

1.1 eg1:

// 变量提升例子
console.log(a); // undefined
var a;
var b;
var c;
console.log(b); // undefined
console.log(c); // undefined

在这个例子中,三个变量a、b、c都被提升到了全局执行上下文(EC),即使它们在代码中声明的位置在 console.log() 函数之后。因此,当我们尝试在声明之前使用它们时,它们的值都是 undefined。

变量提升例子 1.2:

// 变量提升例子
function func() {
    console.log(a); // undefined
    var a = 10;
    console.log(a); // 10
}
func();

在这个例子中,变量a也被提升到了函数作用域的顶部,即使它在代码中声明的位置在 console.log() 函数之后。因此,当我们尝试在声明之前使用它时,它的值是 undefined。然而,在声明之后,它的值就变成了 10。

2.类型转换:

2.1 基本类型转换

类型转换:在JavaScript中,当两种不同类型的数据进行比较或运算时,JavaScript会自动将其中一种数据转换为另一种数据类型,这个过程被称为类型转换。

2.1.1 隐式类型转换:

隐式类型转换:JavaScript会自动将一种数据类型转换为另一种数据类型,而无需程序员的明确指示。隐式类型转换通常发生在比较和运算中。

// 隐式类型转换例子
var a = 10;
var b = '10';
console.log(a == b); // true
console.log(a === b); // false

在这个例子中,当比较a和b时,JavaScript会自动将字符串b转换为数字,以便进行比较。因此,a == b为true,而a === b为false。

2.1.2 显式类型转换:

显式类型转换:程序员可以使用内建函数或运算符来明确地将一种数据类型转换为另一种数据类型。

  • 1.Number():将变量转换为数字。
  • 2.String():将变量转换为字符串。
  • 3.Boolean():将变量转换为布尔值。
// 显式类型转换例子
var a = '10';
var b = Number(a);
console.log(typeof b); // number

在这个例子中,我们使用Number()函数将字符串a转换为数字,因此b的类型是数字。

结论:

变量提升和类型转换是JavaScript中的两个重要概念。理解变量提升可以帮助程序员避免意外的错误,而理解类型转换可以帮助程序员在比较和运算中正确地处理不同类型的数据。