【3】JavaScript-数据类型

JavaScript的主要数据类型

在这里插入图片描述
JavaScript 的数据类型大致可以分为基本类型引用类型两种。两者的区别是:将值存储在变量中的方法
基本类型 的变量中,值本身是直接被存储的。
引用类型 的变量,存储的是值得参照值(实际存储值的内存的地址)
在这里插入图片描述
在这里插入图片描述

字面量

在JavaScript中,字面量(Literal)是表示固定值的语法表示法。它们用于直接表示数据而不需要通过变量进行引用。

数字字面量(number)

数字字面量,可以进一步分为 整数字面量浮点字面量

整数字面量

整数字面量是一种表示整数的语法表示法,在编程中用于直接表示整数值而不需要通过变量进行引用。整数字面量是一个数字序列,不包含小数点或指数部分。

在 JavaScript 中,整数字面量可以是十进制、十六进制、八进制或二进制形式。

  1. 十进制形式:以数字序列表示,例如:42100-10
  2. 十六进制形式:以 0x 开头,后面跟随十六进制数字序列,例如:0xFF0x10
  3. 八进制形式:以 0 开头,后面跟随八进制数字序列,例如:0o100o7(在严格模式下,八进制字面量被禁用)。
  4. 二进制形式:以 0b 开头,后面跟随二进制数字序列,例如:0b10100b1100

示例:

let decimal = 42; // 十进制整数字面量
let hexadecimal = 0xFF; // 十六进制整数字面量,相当于十进制的 255
let octal = 0o10; // 八进制整数字面量,相当于十进制的 8
let binary = 0b1010; // 二进制整数字面量,相当于十进制的 10

浮点字面量

浮点字面量是一种表示浮点数的语法表示法,在编程中用于直接表示浮点数值而不需要通过变量进行引用。浮点字面量是一个数字序列,包含一个小数点并可以包含指数部分。

在 JavaScript 中,浮点字面量可以是十进制形式或科学计数法形式。

  1. 十进制形式:以数字序列表示,包含一个小数点,例如:3.140.5-1.25
  2. 科学计数法形式:以数字序列加上一个 eE 表示指数,例如:2.5e2(相当于 2.5 * 10^2,即 250)、5.2e-3(相当于 5.2 * 10^-3,即 0.0052)。

示例:

let decimal = 3.14; // 十进制浮点字面量
let scientific = 2.5e2; // 科学计数法形式的浮点字面量,相当于 250

字符串字面量(string)

字符串字面量是一种表示字符串值的语法表示法,在编程中用于直接表示字符串而不需要通过变量进行引用。字符串字面量由一对单引号(')或双引号(")括起来的字符序列组成。

在 JavaScript 中,字符串字面量可以包含任意字符,包括字母、数字、标点符号和特殊字符。例如:

let singleQuoted = 'Hello'; // 单引号字符串字面量
let doubleQuoted = "World"; // 双引号字符串字面量

另外,在 JavaScript 中,还可以使用模板字面量(Template literals)表示多行字符串和插入变量的字符串。模板字面量由一对反引号(`)括起来的字符序列组成。例如:

let multiLine = `This is
a multi-line
string`; // 模板字面量表示多行字符串

let name = 'John';
let greeting = `Hello, ${name}!`; // 模板字面量表示插入变量的字符串

模板字符串

通过使用模板字符串(Template Strings),也就上面提到过的模板字面量,可以实现如下字符串的表示。

  • 将变量嵌入字符串中
  • 阔多行(=包含换行符)的字符串

在模板字符串中,使用 ` (反引号) 来代替单引号和双引号字符串。

示例:

let name = '九皇';
let msg = `你好,${name}叔叔。
	好好学习哈~
`;
console.log(msg);

注意

  1. 原本在单引号(')或双引号(")中需要使用 \n 进行换行,在模板字符串中可以直接换行。
  2. 使用 ${...} 的形式可以将变量嵌入字符串中。

数组字面量

数组主要是指数据的集合。

数组字面量由一对方括号([])括起来的项列表组成,每个项之间用逗号分隔。

在 JavaScript 中,数组字面量可以包含任意类型的数据项,包括数字、字符串、布尔值、对象、数组等。例如:

let numbers = [1, 2, 3, 4, 5]; // 数字数组字面量
let names = ['John', 'Alice', 'Bob']; // 字符串数组字面量
let mixed = [1, 'hello', true]; // 混合类型数组字面量
let objects = [{ name: 'John', age: 30 }, { name: 'Alice', age: 25 }]; // 对象数组字面量

另外,数组字面量还可以包含嵌套数组,从而创建多维数组。例如:

let matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; // 二维数组字面量

对象字面量

对象是指将名字作为 key 可以访问的数组,也成为哈希,关联数组。
通常的数组只有索引能作为 key,与之不同,在对象中,可以将字符串作为 key 来访问。

对象字面量由一对花括号({})括起来的键值对列表组成,每个键值对之间用逗号分隔。

在 JavaScript 中,对象字面量可以包含多个键值对,每个键值对由一个键和一个值组成,键和值之间使用冒号(:)分隔。键可以是字符串或标识符,值可以是任意类型的数据,包括数字、字符串、布尔值、对象、数组等。例如:

let person = {
    name: 'John',
    age: 30,
    isStudent: false
}; // 对象字面量表示一个人的信息对象

let book = {
    title: 'JavaScript Cookbook',
    author: 'David Flanagan',
    pages: 500
}; // 对象字面量表示一本书的信息对象

另外,对象字面量还可以包含嵌套对象,从而创建复杂的对象结构。例如:

let person = {
    name: 'John',
    age: 30,
    address: {
        city: 'New York',
        country: 'USA'
    }
}; // 对象字面量表示一个人的信息对象,包含嵌套的地址对象

对象 是指 … 各个元素可以使用 key 来访问的数组(也称为关联数组、哈希)

关联数组和对象是同一个东西
在 JavaScript 中,关联数组和对象是同一个东西。对于学过其他语言的人来说或许会感到有些违和感,但是在 JavaScript 中,关联数组对象 只是偶尔根据用法或者上下文来区分。

数组内的各个元素称为元素,而对象中的各个数据称为属性。属性中,不仅可以存储字符串和数字等信息,还可以存储函数(过程)。
存储函数的属性,称为方法。

var obj = {x:1, y:2, z:3};
console.log(obj.x);   // 结果:1
console.log(obj['x']); // 结果:1

对象字面量的写法如下,需要注意的是括号字面量整体的不是中括号而是大括号。

{键名:, 键名:, ...}

要访问对象字面量的各个属性,有根据点运算符的方法和中括号这两种方法。

对象名.属性名     <--- 点运算符
对象名['属性名']  <--- 中括号

上述两种访问对象字面量方法的差异:

obj.123;    (错误)
obj['123']; (正确)

在点运算符中,属性名被视为标识符,所以不能使用不遵循标识符命名规则的名称,如123。但是,在中括号方法中,属性名只是作为字符串来指定,所以没有这样的限制。

函数字面量(function)

函数字面量,也称为匿名函数或者函数表达式,是一种在JavaScript中定义函数的方式。与传统的函数声明(function declaration)不同,函数字面量可以在需要的地方直接定义函数,而不必提前声明函数名。

函数字面量的语法形式如下:

let functionName = function(parameters) {
    // 函数体
};

其中:

  • functionName 是可选的函数名,可以省略,即匿名函数。
  • parameters 是函数的参数列表,可以为空。
  • 函数体是一段代码块,包含了函数的具体实现。

示例:

let add = function(a, b) {
    return a + b;
}; // 匿名函数

let result = add(3, 4); // 调用匿名函数
console.log(result); // 输出 7

未定义值(undefined)

在 JavaScript 中,未定义值(undefined)表示变量已声明但尚未赋值的状态。换句话说,当尝试访问尚未赋值的变量时,其值为 undefined。在 JavaScript 中,undefined 是一个全局变量,它的值是 undefined。

下面是一些产生未定义值的情况:

  1. 声明了变量但未初始化或赋值:
let x;
console.log(x); // 输出 undefined
  1. 访问对象的不存在的属性时:
let obj = {};
console.log(obj.foo); // 输出 undefined
  1. 函数未显式返回值时,默认返回 undefined:
function doSomething() {
  // 没有返回值
}
console.log(doSomething()); // 输出 undefined
  1. 参数未传递时的默认值:
function greet(name) {
  console.log('Hello ' + name);
}
greet(); // 输出 Hello undefined

在条件判断中,undefined 被视为假值(false)。因此,当一个变量的值是 undefined 时,它在布尔上下文中被视为 false。

空(null)

在 JavaScript 中,null 表示一个特殊的值,表示“空”、“无”、“不存在”或“未知”。null 是 JavaScript 中的原始值之一,表示变量不指向任何对象或值。当你想要明确表示某个变量为空时,可以将其赋值为 null。

以下是一些产生 null 值的情况:

  1. 手动赋值为 null:
let myVar = null;
console.log(myVar); // 输出 null
  1. 表示找不到值的情况:
let result = document.getElementById('nonexistent-id');
console.log(result); // 输出 null
  1. 表示空对象或不存在的属性:
let obj = { foo: null };
console.log(obj.bar); // 输出 null

null 是一个特殊的值,与 undefined 不同undefined 表示一个变量已经声明但未被赋值,而 null 表示一个变量明确被赋值为空。

在条件判断中,null 被视为假值(false)。因此,当一个变量的值是 null 时,它在布尔上下文中被视为 false。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值