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

JavaScript 中的变量和数据类型

可用

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 中因其块级作用域和对重新赋值的控制而更受青睐。

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

1
任务
Frontend SELF ZH,  第 33 级课程 1
已锁定
var, let 和 const
var, let 和 const
1
任务
Frontend SELF ZH,  第 33 级课程 1
已锁定
块级作用域
块级作用域
评论
  • 受欢迎
你必须先登录才能发表评论
此页面还没有任何评论