CodeGym /Java 课程 /Frontend SELF ZH /JavaScript 中的变量和数据类型

JavaScript 中的变量和数据类型

Frontend SELF ZH
第 33 级 , 课程 1
可用

2.1 JavaScript 中的变量

JavaScript 是一种灵活且动态的编程语言,支持多种方式来声明变量和处理数据类型。在这堂课里,我们会讨论三种主要的变量声明方式(varletconst)和 JavaScript 中的基本数据类型。

JavaScript 中的变量

JavaScript 是动态类型语言。变量没有固定的类型。你可以在任何时候给变量赋任何值(不过有一些细节要注意)。

要创建一个变量,你需要写出这样的结构:

    
      var name;
    
  

你可以马上给变量赋个值:

    
      var name = value;
    
  

其实 JavaScript 有整整三种方式来创建变量。我们现在来详细讨论一下它们。

var 操作符

使用 var 声明的变量具有函数或全局作用域。它们会被“提升”(hoisting),这意味着在代码执行时,它们的声明会被提到作用域的顶部。

例子:

JavaScript
    
      console.log(x); // undefined
      var x = 10;
      console.log(x); // 10
    
  

在这个例子中,变量 x 被提升到它作用域的顶部,因此第一个 console.log 输出 undefined

换句话说,“提升”把我们的代码变成了这样:

JavaScript
    
      var x;
      console.log(x); // undefined
      x = 10;
      console.log(x); // 10
    
  

let 操作符

开发者们很想改变 var 操作符的行为,但他们害怕破坏已经编写的几百万行代码。所以,他们只是想出了另一个操作符,虽然也是创建变量,但行为稍有不同。

let 声明的变量具有块级作用域,这意味着它们只在它们被声明的代码块(通常是大括号 {})中可用。let 不像 var 那样会被提升。

例子:

变量 y 只在 if 代码块内存在。

JavaScript
    
      if (true) {
        let y = 20;
        console.log(y); // 20
      }

      console.log(y); // ReferenceError: y is not defined
    
  

const 操作符

const 声明的变量也具有块级作用域,且在初始化后不能被重新赋值。不过,这并不意味着通过 const 声明的对象不可变——它们的属性可以修改。

也就是说,变量不能变,但它引用的对象可以变。想做得更好,但结果总是一如既往的糟糕。

例子:

在这个例子中,常量 x 不能被重新赋值,但对象 obj 可以被修改。

JavaScript
    
      const x = 30;
      console.log(x); // 30
      x = 40; // TypeError: Assignment to constant variable.

      const obj = { name: 'Alice' };
      obj.name = 'Bob'; // 这是允许的
      console.log(obj.name); // Bob
    
  

2.2 基本数据类型

JavaScript 支持几种基本数据类型,它们是简单的值,不是复杂的对象。

Number 类型

代表任何数值,包括整数和浮点数。

例子:

JavaScript
    
      let num = 42;
      let pi = 3.14;
    
  

String 类型

代表文本数据:字符串、字符、表情符号。所有看起来像字符串的东西全算在这儿。

例子:

JavaScript
    
      let greeting = "Hello, world!";
      let facepalm = "🤦";
      let char = 'x';
    
  

Boolean 类型

代表逻辑值 truefalse

JavaScript
    
      let isTrue = true;
      let isFalse = false;
    
  

Null 类型

代表有意的空值。

JavaScript
    
      let empty = null;
    
  

如果一个类型含有一个表示空的值,那它到底是一个独特的值还是一个独特的类型呢?

Undefined 类型

代表一个已声明但尚未初始化的变量的值。

JavaScript
    
      let notAssigned;
      console.log(notAssigned); // undefined
    
  

2.3 比较 var, let 和 const

让我们再来比较一下这三种创建变量的方法:

特性 var let const
作用域 函数或全局 块级 块级
提升 (Hoisting) 是的,但初始化不提升
重新赋值 可以 可以 不可以
初始化 非必要 非必要 必须

JavaScript 提供了几种声明变量的方法,每种都有其特性和适用性,具体取决于上下文。由于 var 的提升和全局作用域特性,它使用得较少。 letconst 在现代 JavaScript 中因其块级作用域和对重新赋值的控制而更受青睐。

基本数据类型允许处理基本的数据结构,提供了创建复杂应用程序所需的基本功能。这是全世界最流行的语言哦:)

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION