基本数据类型
例如:
var foo = 42; // 数字
foo = "bar"; // 字符串
foo = true; // 逻辑真
复制代码
Boolean 类型
布尔类型表示一个逻辑值,有两个值:true 和 false。
// 假设 true 表示男,false 表示女
Number 类型
数字类型用于表示数值,整数、浮点数(小数),还有一些带符号的值:+Infinity(正无穷大),-Infinity(负无穷大)和 NaN (非数值,Not a Number)。
var oct = 032; // 八进制数表示的26
var dec = 26; // 十进制数26
var hex = 0x1a; // 十六进制数表示的26
var fnum1 = 7.26; // 标准格式
var fnum2 = -6.24; // 标准格式
var fnum3 = 3.14E6; // 科学计数法格式3.14*106
var 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
console.log(Boolean(true)); // true
console.log(Boolean(9527)); // true
console.log(Boolean({myname: 'Bob'})); // true
console.log(Boolean('abcd')); // true
复制代码
其他类型转成 Number
使用 Number() 方法将其他类型的数据转换成 Number 类型
// 将数字类型的字符串,最后的结果保留原数据。
console.log(Number('123.456')); // 123.456
console.log(Number('789')); // 789
// 如果是非数字类型的字符串的话,直接转换成 NaN。
console.log(Number('abc')); // NaN
console.log(Number('123abc')); // NaN
console.log(Number('abc123')); // NaN
console.log(Number(null)); // 0
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(undefined)); // NaN
console.log(Number({myName: '李四'})); // NaN
复制代码
使用 parseInt() 方法将其他类型的数据转换成 Number 类型
//将数字类型的字符串通过该方法转换后,只保留数字的整数部分,不会进行四舍五入运算。
console.log(parseInt('123.456')); // 123
// 非数字类型的字符串转换后的结果为NaN。
console.log(parseInt('abc')); // NaN
console.log(parseInt('789')); // 789
// 以数字开始的字符串,保留数字部分忽略其他内容
console.log(parseInt('789abc')); // 789
// 以数字结尾的字符串,转换成 NaN
console.log(parseInt('abc789')); // NaN
// 将布尔值转换成 Number 类型
console.log(parseInt(true)); // NaN
console.log(parseInt(false)); // NaN
// undefined
console.log(parseInt(undefined)); // NaN
// null
console.log(parseInt(null)); // NaN
console.log(parseInt({name: '李四'})); // NaN
复制代码
使用 parseFloat() 方法将其他类型的数据转换成 Number 类型
// 结果保留原数据,不会对数字进行四舍五入运算。
console.log(parseFloat('123.456')); // 123.456
console.log(parseFloat('abc')); // NaN
console.log(parseFloat('789')); // 789
// 如果在数字后加上非数字的字符,也可以转换成功
console.log(parseFloat('789abc')); // 789
console.log(parseFloat('abc789')); // NaN
// 将布尔值转换成 Number 类型
console.log(parseFloat(true)); // NaN
console.log(parseFloat(false)); // NaN
// undefined
console.log(parseFloat(undefined)); // NaN
// null
console.log(parseFloat(null)); // NaN
console.log(parseFloat({name: '李四'})); // NaN
复制代码
利用隐式转换将字符串类型的数据转换成 Number 类型
// 当非数字类型的字符串相减时,结果都等于NaN
console.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)); //false
console.log(isNaN(-1.23)); //false
console.log(isNaN(5 - 2)); //false
console.log(isNaN(0)); //false
console.log(isNaN("Hello")); //true
console.log(isNaN("2005")); //true
复制代码
其他类型转成 String
使用 String() 方法和 toString()将其他类型的数据转换成 String 类型。
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()); //10
console.log(num.toString(2)); //1010
console.log(num.toString(8)); //12
console.log(num.toString(16)); //a
复制代码
注意:
使用加号操作符(+)把它与一个空字符串("")相加。
console.log(12 + ''); // '12' 最终的结果返回的是字符型
console.log(12 + 3 + '4'); // '154'
console.log( '4'+ 12 + 3); // '4123'
复制代码
评论