写点什么

JavaScript05 - JavaScript 数据类型

发布于: 2021 年 01 月 15 日
JavaScript05 - JavaScript数据类型
  • 为什么需要数据类型

  • 变量的数据类型

  • JavaScript 是一种弱类型或者说动态类型的语言。在声明变量时,我们不需要指定变量的类型,在程序运行过程中,类型会被自动确定。这意味着 JS 变量的内存空间中可以存放任意类型的数据。

基本数据类型

例如:

var foo = 42; // 数字foo = "bar"; // 字符串foo = true; // 逻辑真
复制代码

Boolean 类型

布尔类型表示一个逻辑值,有两个值:true 和 false。

// 假设 true 表示男,false 表示女

var gender = false;
复制代码

Number 类型

数字类型用于表示数值,整数、浮点数(小数),还有一些带符号的值:+Infinity(正无穷大),-Infinity(负无穷大)和 NaN (非数值,Not a Number)。

var oct = 032;		// 八进制数表示的26var dec = 26;		// 十进制数26var hex = 0x1a;		// 十六进制数表示的26var fnum1 = 7.26;		// 标准格式var fnum2 = -6.24;	// 标准格式var fnum3 = 3.14E6;	// 科学计数法格式3.14*106var fnum4 = 8.96E-3;	// 科学计数法格式8.96*10-3
复制代码

String 类型

字符串类型用于表示文本数据,使用单引号或双引号括起来,比如:'Hello World!'。

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

var slogan = 'Knowledge';		// 单引号,存放一个单词var str = "the sky is blue."; 	// 双引号,存放一个句子var color = '"red"blue'; 		// 单引号中包含双引号var food = "'pizza'bread";		// 双引号中包含单引号var num = '', total = "";		// 定义空字符串
复制代码

Undefined 类型

Undefined 类型只有一个值,即 undefined。任何一个只声明而没有赋值的变量都会被隐式的(自动的)赋值为 undefined。例如:

var message;console.log(message); //"undefined"
复制代码

Null 类型

Null 类型也只有一个值,即 null。

null 是表示缺少的标识,指示变量未指向任何对象。把 null 作为尚未创建的对象,也许更好理解。这也正是使用 typeof 操作符检测 null 值时会返回"object" 的原因,如下所示:

var myphone = null; // 未指向任何对象的变量
myphone = {
brand: '小米',
number: '13526471107'
};
复制代码

注意:

与 null 不同的是,undefined 表示没有为变量设置值,而 null 则表示变量(对象或地址)不存在或无效。

引用类型

在计算机科学中, 对象是指内存中的可以被 [标识符] 引用的一块区域。

在 Javascript 里,引用类型的数据指的是各种对象,例如,Object、Array、Date 等,他们在内存中的存储方式与原始类型的数据不同。

以 Object 对象为例,Object 对象是一组属性的集合。属性包含一个属性名和一个属性值,如下所示:

var person = {	name: 'jxl',	age: 20,	id: 100};
复制代码

检测数据类型

JavaScript 中对于数据类型的检测提供了多种方式,现阶段了解 type 操作符即可。如代码所示:

// 基本类型或原始类型var myName = '张三';var age = 18;var gender = false;var weight = undefined;var phone = null;// 检查原始数据的类型console.log(typeof myName); // 'string'console.log(typeof age); // 'number'console.log(typeof gender); // 'boolean'console.log(typeof weight); // 'undefined'console.log(typeof phone); // 'object'// 引用类型var hobby = ['看电影', '学习'];var car = {	color: '蓝色',	brand: '单车'};// 检查引用数据的类型console.log(typeof hobby); //'object'console.log(typeof car); // 'object'
复制代码

数据类型转换

强制转换:编程人员编写代码强制对数据进行转换。

隐式转换:不是编程人员刻意去转换的,而是浏览器(JS 解析引擎)自动转换的。

其他类型转成 Boolean

使用 Boolean( ) 方法将其他类型的数据转换成 Boolean 类型。

下面这些值将被转换成 false

  • false

  • undefined

  • null

  • 0

  • NaN(不是一个数值)

  • ‘ ’

代码如下:

console.log(Boolean(false)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(null)); // false
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean('')); // false
复制代码

下面这些值将被转换成 true

  • 非空字符串

  • 非零数字

  • 对象

  • true

console.log(Boolean(true)); // trueconsole.log(Boolean(9527)); // trueconsole.log(Boolean({myname: 'Bob'})); // trueconsole.log(Boolean('abcd')); // true
复制代码

其他类型转成 Number

使用 Number() 方法将其他类型的数据转换成 Number 类型

// 将数字类型的字符串,最后的结果保留原数据。console.log(Number('123.456')); // 123.456console.log(Number('789')); // 789// 如果是非数字类型的字符串的话,直接转换成 NaN。console.log(Number('abc')); // NaNconsole.log(Number('123abc')); // NaNconsole.log(Number('abc123')); // NaNconsole.log(Number(null)); // 0console.log(Number(true)); // 1console.log(Number(false)); // 0console.log(Number(undefined)); // NaNconsole.log(Number({myName: '李四'})); // NaN
复制代码

使用 parseInt() 方法将其他类型的数据转换成 Number 类型

//将数字类型的字符串通过该方法转换后,只保留数字的整数部分,不会进行四舍五入运算。console.log(parseInt('123.456')); // 123// 非数字类型的字符串转换后的结果为NaN。console.log(parseInt('abc')); // NaNconsole.log(parseInt('789')); // 789// 以数字开始的字符串,保留数字部分忽略其他内容console.log(parseInt('789abc')); // 789// 以数字结尾的字符串,转换成 NaNconsole.log(parseInt('abc789')); // NaN// 将布尔值转换成 Number 类型console.log(parseInt(true)); // NaNconsole.log(parseInt(false)); // NaN// undefinedconsole.log(parseInt(undefined)); // NaN// nullconsole.log(parseInt(null)); // NaNconsole.log(parseInt({name: '李四'})); // NaN
复制代码

使用 parseFloat() 方法将其他类型的数据转换成 Number 类型

// 结果保留原数据,不会对数字进行四舍五入运算。console.log(parseFloat('123.456')); // 123.456console.log(parseFloat('abc')); // NaNconsole.log(parseFloat('789')); // 789// 如果在数字后加上非数字的字符,也可以转换成功console.log(parseFloat('789abc')); // 789console.log(parseFloat('abc789')); // NaN// 将布尔值转换成 Number 类型console.log(parseFloat(true)); // NaNconsole.log(parseFloat(false)); // NaN// undefinedconsole.log(parseFloat(undefined)); // NaN// nullconsole.log(parseFloat(null)); // NaNconsole.log(parseFloat({name: '李四'})); // NaN
复制代码

利用隐式转换将字符串类型的数据转换成 Number 类型

// 当非数字类型的字符串相减时,结果都等于NaNconsole.log('abc' - '18'); // NaN// 当数字类型的字符串进行// 乘、除、取余运算时,首先会将字符串转换成数字,然后再进行减运算,最终的结果返回的是数值型。console.log('28' - '18'); // 10 console.log('32' / '4'); // 8 console.log('3' * '4'); // 12 console.log('12' % '5'); // 2 
复制代码

用于检查其参数是否是非数字(isNaN() 函数)

console.log(isNaN(123)); //falseconsole.log(isNaN(-1.23)); //falseconsole.log(isNaN(5 - 2)); //falseconsole.log(isNaN(0)); //falseconsole.log(isNaN("Hello")); //trueconsole.log(isNaN("2005")); //true
复制代码

其他类型转成 String

使用 String() 方法和 toString()将其他类型的数据转换成 String 类型。

  • String()函数可以将任意类型转换为字符型;

  • 除了 null 和 undefined 没有 toString()方法外,其他数据类型都可以完成字符的转换。

console.log(String(123.456)); // '123.456'console.log(String(null)); // 'null'console.log(String(true)); // 'true'console.log(String({myName: '李四'})); // '[object Object]'var num = 10;console.log(num.toString());	//10console.log(num.toString(2));	//1010console.log(num.toString(8));	//12console.log(num.toString(16));	//a
复制代码

注意:

使用加号操作符(+)把它与一个空字符串("")相加。

console.log(12 + ''); // '12' 最终的结果返回的是字符型console.log(12 + 3 + '4'); // '154'console.log( '4'+ 12 + 3); // '4123'
复制代码


发布于: 2021 年 01 月 15 日阅读数: 16
用户头像

所思在远道 2020.08.19 加入

一只慢慢进步的小白

评论

发布
暂无评论
JavaScript05 - JavaScript数据类型