赞
踩
JavaScript数据类型,先给出几个直观的例子:
let number = 100; // 数字
let text = "Hello, world!"; // 字符串
let isJavaScriptFun = true; // 布尔值
let person = {name: "John", age: 30}; // 对象
let colors = ["red", "green", "blue"]; // 数组
JavaScript数据类型分类
一)原始(primitive:原始、基本)数据类型,也称为原始值(primitive value),包括:
1.布尔值(Boolean),其字面值只有两个,分别是true和false。
2.null,Null类型只有一个唯一的字面值null, null 值的特殊关键字。JavaScript 是大小写敏感的,因此 null 与 Null、NULL或变体完全不同。
3.undefined,Undefined类型只有一个唯一的字面值undefined,undefined 表示变量未赋值时的属性。而undefined是JavaScript中的一个全局变量,即挂载在window对象上的一个变量,并不是关键字。
4.数字(Number),整数或浮点数,例如: 42 或者 3.14159。
5.任意精度的整数(BigInt),可以安全地存储和操作大整数。 ECMAScript 2020 引入了一个新的原始数据类型BigInt,用于表示任意精度的整数。在之前的版本中,JavaScript只能表示有限范围的整数,超出范围的整数会被转换为特殊的Infinity值。
6.字符串(String),字符串是一串表示文本值的字符序列,例如:"Howdy"。
7. 符号(Symbol,在 ECMAScript 2015 / ES6 中新添加的类型)。一种实例是唯一且不可改变的数据类型。
二)对象(object)类型,也称为复杂数据类型(Complex Types),是一种非原始(non-primitive)数据类型,也称为引用值(reference value),用于更复杂的数据结构。JavaScript中的对象类型包括:
1、普通对象(Plain objects):是指用户自定义的对象类型。这些对象通常是通过使用构造函数或类来定义的。在JavaScript中,有多种方式可以创建对象。在ES6及以后的版本中,JavaScript引入了类(class),这是一种创建和定义对象的新方法。
2、数组(Arrays):例如let arr = [1, 2, 3]; 数组对象有一些特殊的属性和方法,如length、push、pop等。
3、函数(Functions):函数也是对象,它们可以有属性和方法。例如:
function sayHello() {
console.log('Hello');
}
sayHello.myProperty = 'This is a property of the function.';
4、日期(Dates):例如let date = new Date();
5、正则表达式(RegExp,Regular expressions):例如let regex = /ab+c/;
6、其他内置对象,如Math,Set,Map等。
对于对象(object)类型目前可以不必深究,后面适当的时候将介绍。
JavaScript的数值类型只有一种,即 Number,它遵循 IEEE 754 双精度 64 位浮点数格式。这意味着 JavaScript 的数值类型可以表示整数和浮点数,例如:42 或 3.14159。但其精度和范围都受到双精度浮点数的限制。例如:
let i = 42; // 整数
let f = 3.14; // 浮点数
JavaScript使用Infinity 和 -Infinity:表示正无穷大和负无穷大。例如:
console.log(1 / 0); // Infinity
console.log(-1 / 0); // -Infinity
注意,除以0 在 JavaScript 中并不会引发一个异常,而是返回 Infinity。
为了解决对大整数的需求,JavaScript 引入了 BigInt 类型。BigInt 可以表示任意精度的整数,但不能与 Number 类型混合运算。
例如: javascript let bigInt = 1234567890123456789012345678901234567890n;
【其他语言如C++ 提供多种数值类型,如包括不同大小和精度的整数(如 int, long, long long 等)和浮点数(如 float, double, long double 等),允许更精细的控制和优化,而 JavaScript 只有一种数值类型 Number(除了大整数的 BigInt)。】
不同数据类型的取值范围和大小受特定JavaScript引擎实现方式和底层机制的控制。
JavaScript 的 Number 类型表示双精度 64 位二进制格式的值(IEEE 754 标准)。Number 类型包括整数和浮点数。取值范围:
最小值(最接近 0 的正数):Number.MIN_VALUE,约为 5e-324
最大值:Number.MAX_VALUE,约为 1.7976931348623157e+308
可以使用如下代码获取它们的取值范围:
console.log("Number.MIN_VALUE:", Number.MIN_VALUE);
console.log("Number.MAX_VALUE:", Number.MAX_VALUE);
BigInt 类型用于表示任意精度的整数。
取值范围:可以表示非常大的整数,它没有具体的大小限制,但受内存限制。
String 类型用于表示文本数据。
取值范围:字符串的长度限制由实现环境决定,但一般可认为是 2^53-1 个字符。可以通过 length 属性获取字符串长度。如:
let str = "Hello, World!";
console.log(str.length); // 13
数组的大小由其元素数量决定。可以使用 length 属性获取数组的长度。如:
let arr = [1, 2, 3, 4, 5];
console.log(arr.length);
JavaScript运算符
JavaScript 中有多种类型的运算符,包括算术运算符、比较运算符、逻辑运算符、赋值运算符、位运算符、字符串运算符、条件(三元)运算符、以及类型运算符。以下是对这些运算符的介绍。
算术运算符
用于执行基本的数学运算。
+: 加法
-: 减法
*: 乘法
/: 除法
%: 取余
++: 自增,值增加1
--: 自减,值减少1
例:
let a = 10;
let b = 5;
console.log(a + b); // 输出 15
console.log(a - b); // 输出 5
console.log(a * b); // 输出 50
console.log(a / b); // 输出 2
console.log(a % b); // 输出 0
比较运算符
用于比较两个值,并返回布尔值(true 或 false)。
==: 等于
===: 全等(值和类型都相等)
!=: 不等于
!==: 全不等(值和类型都不等)
>: 大于
<: 小于
>=: 大于或等于
<=: 小于或等于
例:
console.log(5 == '5'); // 输出 true
console.log(5 === '5'); // 输出 false
console.log(5 != '5'); // 输出 false
console.log(5 !== '5'); // 输出 true
console.log(5 > 3); // 输出 true
console.log(5 < 3); // 输出 false
逻辑运算符
用于逻辑操作,通常与布尔值一起使用。
&&: 逻辑与(AND)
||: 逻辑或(OR)
!: 逻辑非(NOT)
例:
console.log(true && false); // 输出 false
console.log(true || false); // 输出 true
console.log(!true); // 输出 false
赋值运算符
用于给变量赋值。
=: 赋值
+=: 加和赋值
-=: 减和赋值
*=: 乘和赋值
/=: 除和赋值
%=: 取余和赋值
例:
let x = 10;
x += 5; // 等效于 x = x + 5
console.log(x); // 输出 15
位运算符
对二进制位进行操作。
&: 按位与
|: 按位或
^: 按位异或
~: 按位非
<<: 左移
>>: 右移
>>>: 无符号右移
例:
console.log(5 & 1); // 输出 1
console.log(5 | 1); // 输出 5
console.log(5 ^ 1); // 输出 4
console.log(~5); // 输出 -6
console.log(5 << 1); // 输出 10
console.log(5 >> 1); // 输出 2
字符串运算符
通常用于连接字符串。
+: 连接字符串
例:
let str1 = "Hello";
let str2 = "World";
console.log(str1 + " " + str2); // 输出 "Hello World"
条件(三元)运算符
用于在一个表达式内做出条件判断。
condition ? exprIfTrue : exprIfFalse
例:
let age = 18;
let canVote = (age >= 18) ? "Yes" : "No";
console.log(canVote); // 输出 "Yes"
类型运算符
用于检测变量的类型。
typeof: 返回变量的数据类型
instanceof: 检查对象是否是某构造函数的实例
例:
console.log(typeof 42); // 输出 "number"
console.log(typeof 'hello'); // 输出 "string"
console.log(typeof true); // 输出 "boolean"
console.log([1, 2, 3] instanceof Array); // 输出 true
上面提到的运算符是比较常用的,除此之外,还有一元(单目)运算符、按位运算符等等。
数据类型转换
类型转换可以分为显式转换和隐式转换。显式转换是通过使用函数或方法明确地将一种数据类型转换为另一种数据类型;隐式转换则是 JavaScript 自动在表达式上下文中进行的转换。
显式转换
显式转换是通过函数或方法将数据类型明确地转换为另一种数据类型。
1. 转换为字符串
使用 String 函数:
let num = 123;
let str = String(num); // "123"
console.log(str);
使用 toString 方法:
let num = 123;
let str = num.toString(); // "123"
console.log(str);
2. 转换为数字
使用 Number 函数:
let str = "123";
let num = Number(str); // 123
console.log(num);
使用 parseInt 和 parseFloat:
let strInt = "123";
let numInt = parseInt(strInt); // 123
console.log(numInt);
let strFloat = "123.45";
let numFloat = parseFloat(strFloat); // 123.45
console.log(numFloat);
3. 转换为布尔值
使用 Boolean 函数:
let value = 0;
let bool = Boolean(value); // false
console.log(bool);
value = "hello";
bool = Boolean(value); // true
console.log(bool);
隐式转换
隐式转换是 JavaScript 自动进行的类型转换,通常在表达式中发生。
1. 字符串拼接
当一个数字与字符串进行拼接时,数字会被转换为字符串:
let num = 123;
let str = "The number is " + num; // "The number is 123"
console.log(str);
2. 数值运算
当字符串包含数字时,进行数值运算时会被转换为数字:
let str = "123";
let result = str - 0; // 123
console.log(result);
result = str * 1; // 123
console.log(result);
result = str / 1; // 123
console.log(result);
以下是一些常见的类型转换示例:
// Number to String
let num = 123;
let str = num.toString(); // "123"
// String to Number
let strNum = "123";
let numFromString = Number(strNum); // 123
// Boolean to String
let bool = true;
let boolStr = bool.toString(); // "true"
// String to Boolean
let falseStr = "";
let trueStr = "hello";
let boolFromString1 = Boolean(falseStr); // false
let boolFromString2 = Boolean(trueStr); // true
// Automatic type coercion
let result = "123" - 0; // 123
result = "123" * 1; // 123
result = "123" / 1; // 123
关于JavaScript数据类型和运算符更多情况可见https://blog.csdn.net/cnds123/article/details/109307676
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。