JavaScript 数据类型

吐槽君 分类:javascript

JavaScript的数据类型分为两种:原始类型(即基本数据类型或值类型)和对象类型(即引用数据类型)

  • 基本数据类型(值类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol
  • 引用数据类型(对象类型),比如:对象(Object)、数组(Array)、函数(Function)等

⚠️注意: Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值

数据类型

分类 类型
基本类型(值类型) undefined 未定义类型
null 空类型
string 字符串类型
number 数字类型
boolean 布尔值类型
bigint 范围更大的整型值
Symbol 表示独一无二的值
引用数据类型 Object 对象类型
Array 数组类型
Function 函数类型

undefined 和 null

Undefined 这个值表示变量不含有值。可以通过将变量的值设置为 null 来清空变量

var person
var car = "兰博基尼"
console.log(person)
console.log(car)

var car = null
console.log(car)

/* 
undefined
兰博基尼
null 
*/
 

JavaScript 拥有动态类型

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:

var x;               // x 为 undefined
var x = 5;           // 现在 x 为数字
var x = "John";      // 现在 x 为字符串
 

JavaScript 字符串

字符串是存储字符(比如 "Bill Gates")的变量。
字符串可以是引号中的任意文本。您可以使用单引号或双引号:

var carname1="Volvo XC60";
var carname2='Volvo XC60';
 

您可以在字符串中使用引号,只要不匹配包围字符串的引号即可:

var answer1='It\'s alright';
var answer2="He is called \"Johnny\"";
var answer3='He is called "Johnny"';
 

尝试一下 »

JavaScript 数字

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:

var x1=34.00;      //使用小数点来写,其他语言中叫浮点型
var x2=34;         //不使用小数点来写
 

不要用小数验证小数

var x = 0.1; var y = 0.2;
var num = x + y;
console.log(num == 0.3) //false
 

极大或极小的数字可以通过科学(指数)计数法来书写:

var y=123e5;      // 12300000
var z=123e-5;     // 0.00123
 

进制和极值的书写:

var num = 1                //整型,相当于强类型语言中的int
var binaryNum = 0b0110011  //二进制
var octalNum = 015         //八进制
var decimalNum = 15        //十进制
var hexadecimal = 0x15     //十六进制
console.log(num, binaryNum, octalNum, decimalNum, hexadecimal); //1 51 13 15 21

console.log(Number.MIN_VALUE, Number.MAX_VALUE) //数字最小值MIN_VALUE、数字最大值 MAX_VALUE
 

infinity 无穷大,造成infinity的原因:

var a = 1 / 0                      //除以0 Infinity
var b = 10000 ** 100000 ** 100000  //超出最大精度 Infinity

var c = 10000e10 
var d = 10000000000000000000000000000000000n 

console.log("a=%s, b=%s, c=%s d=%s",a, b, d);

/* 
a = Infinity, b = Infinity, c = 10000000000000000000000000000000000n d =%s 
*/
 

NaN意思:no an number,导致NAN的原因:

parseInt("我")     //转小数或者转整数错误操作
var a = -"b"       //减去一个非数字的字符
var num = NAN      //自主赋值
var num; num + 0;  //没有赋值的变量+数字=NaN
1/0 - 1/0          //无穷大减去无穷大
 

JavaScript 布尔

布尔(逻辑)只能有两个值:true 或 false

var x=true  
var y=false
 

布尔常用在条件进行关系比较,转成数字为true = 1 flase = 0

JavaScript 数组

下面的代码创建名为 cars 的数组:

var cars1 = new Array()
cars1[0] = "Saab"
cars1[1] = "Volvo"
cars1[2] = "BMW"

//或者 (condensed array):
var cars2 = new Array("Saab", "Volvo", "BMW");

//或者 (literal array):
var cars3 = ["Saab", "Volvo", "BMW"];
 

数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推
尝试一下 »

JavaScript 对象

对象由花括号分隔。在括号内部,对象的属性与值用键值对(name : value)的形式来定义。属性由逗号分隔:

var person={firstname:"John", lastname:"Doe", id:5566};
 

上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id
空格和折行无关紧要。声明可横跨多行:

var person={
firstname : "John",
lastname  : "Doe",
id        :  5566
};
 

对象属性有两种寻址方式:

name=person.lastname;
name=person["lastname"];
 

image.pngJavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象
尝试一下 »

Symbol

symbol 是一种基本数据类型 (primitive data type)。Symbol()函数会返回symbol类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的symbol注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:"new Symbol()"

每个从Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。更进一步的解析见—— glossary entry for Symbol

const symbol1 = Symbol();
const symbol2 = Symbol(42);
const symbol3 = Symbol('foo');

console.log(typeof symbol1);
// expected output: "symbol"

console.log(symbol2 === 42);
// expected output: false

console.log(symbol3.toString());
// expected output: "Symbol(foo)"

console.log(Symbol('foo') === Symbol('foo'));
// expected output: false
 

语法

Symbol([description])
 

description 可选可选的,字符串类型。对symbol的描述,可用于调试但不是访问symbol本身

声明变量类型

当您声明新变量时,可以使用关键词 "new" 来声明其类型:

var carname=new String;
var x=      new Number;
var y=      new Boolean;
var cars=   new Array;
var person= new Object;
 

console.log支持的格式标志

占位符 描述
%s 字符串
%d   %i 整数
%f 浮点数
%o/  %O object对象
%c css样式
%% console.log("%%")         // 输出结果:%
console.log("%%","zzk") // 输出结果:% zzk

回复

我来回复
  • 暂无回复内容