美文网首页
JavaScript数据类型

JavaScript数据类型

作者: icon6 | 来源:发表于2019-05-31 09:23 被阅读0次

1. 基本数据类型

1.1 Number 数值类型

在javascript中无论是整数还是小数都属于数值类型

1.2 String 字符串类型

在javascript中无论是用单引还是双引括起来的都是字符串类型

1.3 Boolean 布尔类型

在javascript中布尔类型比较特殊,只有 truefalse

1.4 Undefined 未定义类型

在javascript中未定义类型比较特殊,只有一个取值 undefined

1.5 Null 空类型

2. 复杂数据类型(也叫引用数据类型)

Object 对象类型是最复杂的数据类型,又可以分成三个子类型。

  • 对象(Object)
  • 数组(Array)
  • 函数(Function)

3. ES6新增一种数据类型(Symbol )

后期会单独整理ES6笔记,这里不过多记录

4. typeof 运算符

在javascript中为了方便我们检测某一种数据是属于哪一种数据类型的, javascript提供了一个名称叫做 typeof 的操作符(还有一种写法 typeof() ,自己随意选择)

var num;
num = 100;
// 利用typeof检测num这个常量是属于哪一种数据类型的, 并且将检测的结果保存到res1这个变量中
var res1 = typeof num
console.log(res1); // number

var res2 = typeof true
console.log(res2); // boolean

var res3 = typeof 'Hello'
console.log(res3); // string

var res4 = typeof undefined
console.log(res4); // undefined

// 由于没有给v这个变量进行初始化, 所以这个变量中保存的数据默认是undefined
var res5 = typeof v;
console.log(res5); // undefined

//null的类型是object,这是由于历史原因造成的。1995年的 JavaScript 语言第一版,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),没考虑null,只把它当作object的一种特殊值。后来null独立出来,作为一种单独的数据类型,为了兼容以前的代码,typeof null返回object就没法改变了。
var res6 = typeof null
console.log(res6); // object

5. 数据类型转换

5.1 转换成字符串类型

如果想将四种基本数据类型转成字符串类型,通常有以下几种方法

  • String() 方法可以将任意类型的值转成字符串

    var res1 = typeof String(123)
    console.log(res1); // string
    
    var res2 = typeof String(null)
    console.log(res2); // string
    
    var res3 = typeof String(undefined)
    console.log(res3); // string
    
    var res4 = typeof String(true)
    console.log(res4); // string
    
  • 可以通过.toString()方法来转成字符串

    // toString()方法
    var val1 = 123;
    var res6 = val1.toString()
    console.log(typeof res6); // string
    
    var val2 = true;
    var res7 = val2.toString() 
    console.log(typeof res7); // string
    
    // 这里需要注意的是toString是Object对象内置的方法,null和undefined是没有的。
    var val3 = undefined;
    var res8 = val3.toString() 
    console.log(typeof res8); // 报错 Cannot read property 'toString' of null
    
    var val4 = null;
    var res8 = val4.toString() 
    console.log(typeof res8); //  报错 Cannot read property 'toString' of null
    
  • 通过 + 运算符也可以转成字符串(隐士类型转换)

    var num = 10;
    var str = "boy";
    // 这里的 + 是字符串的拼接 底层的本质其实就是调用String()函数
    var res5 = num + str;
    console.log(res5); // 10boy
    console.log(typeof res5); // string
    
5.2 转换成数值类型

如果想将四种基本数据类型转成字符串类型,通常有以下几种方法

  • 通过 Number() 方法来转换

    // 将String类型转换为数值类型
    // 如果字符串中都是数值, 那么就正常转换
    var str1 = "456";
    var res1 = Number(str1);
    console.log(res1); // 456
    console.log(typeof res1); // number
    
    // 如果是空字符串或者空格字符串,那么转换成0
    var str2 = "  ";
    var res2 = Number(str2);
    console.log(res2); // 0
    console.log(typeof res2); // number
    
    // 如果字符串不都是字符串,那么转换成NaN
    var str = "10boy";
    var res = Number(str);
    console.log(res); // NaN
    console.log(typeof res); // number
    
    // 将布尔类型转换为数值类型
    // 如果布尔类型为True那么就转换成1
    var result1 = Number(true)
    console.log(result1); // 1
    
    // 如果布尔类型为False那么就转换成0
    var result2 = Number(false)
    console.log(result2); // 0
    
    // 将null转换成数字
    var result3 = Number(null)
    console.log(result3); // 0
    
    // 将undefined转换成数字
    var result4 = Number(undefined)
    console.log(result4); // NaN
    

    NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),它的数据类型依然属于Number,使用typeof运算符可以看得很清楚。

    NaN不等于任何值,包括它本身。

  • 可以通过运算符的 + 号和 - 号来转换(隐士类型转换)

    // 虽然通过+/-都可以将其它类型转换为数值类型, 但是-会改变数值的正负性
    // +/-底层本质上就是调用了Number函数
    var num = +"456";
    console.log(num); // 456
    console.log(typeof num); // number
    
    var num1 = +"";
    console.log(num1); // 0
    console.log(typeof num1); // number
    
    var num2 = +"  ";
    console.log(num2); // 0
    console.log(typeof num2); // number
    
    var num3 = +"abc";
    console.log(num3); // NaN
    console.log(typeof num3); // number
    
    var flag1 = true;
    console.log(+flag1); // 1
    
    var flag2 = false;
    console.log(+flag2); // 0
    
    console.log(+null); // 0
    console.log(typeof +null); // number
    
    console.log(+undefined); // NaN
    console.log(typeof +undefined); // number
    
    var str1 = "123";
    var str2 = "456";
    var res1 = str2 - str1;
    var res2 = str1 + str2
    console.log(res1); // 333
    console.log(typeof res1); // number
    
  • 可以通过 parseInt()parseFloat() 方法来转换

    // 注意点: parseInt/parseFloat都会从左至右的提取数值, 一旦遇到非数值就会立即停止
    // 停止的时候如何还没有提取到数值, 那么就返回NaN
    var str = "123abc";
    var res = parseInt(str);
    console.log(res); // 123
    console.log(typeof res); // number
    
    var str1 = "add123abc";
    var res1 = parseInt(str1);
    console.log(res1); // NaN
    console.log(typeof res1); // number
    
    var str2 = "12.a314";
    // var res2 = parseInt(str2); // 12
    var res2 = parseFloat(str2); // 12
    console.log(res2); // 12
    console.log(typeof res2); // number
    
    var str3 = "13.14abc";
    var res3 = parseFloat(str3);
    console.log(res3); // 13.14
    console.log(typeof res3); // number
    
    // 注意点: parseInt/parseFloat都会将传入的数据当做字符串来处理
    var res4 = parseInt(true);
    console.log(res4); // NaN
    
    var res5 = parseInt(undefined);
    console.log(res5); // NaN
    
    var res6 = parseInt(null);
    console.log(res6); // NaN5.3 转换成布尔类型
    
5.3 转换成布尔类型

在JavaScript中如果想将基本数据类型转换为布尔类型, 那么只需要调用 Boolean() 方法

// 除了空字符串、0、null、undefined、NaN是false其余都是true
var str1 = 'abc'
var res1 = Boolean(str1);
console.log(res1); // true

var str2 = ''
var res2 = Boolean(str2);
console.log(res2); // false

var str3 = null
var res3 = Boolean(str3);
console.log(res3); // false

var str4 = undefined
var res4 = Boolean(str4);
console.log(res4); // false

var str5 = NaN
var res5 = Boolean(str5);
console.log(res5); // false

var str6 = 123
var res6 = Boolean(str6);
console.log(res6); // true

var str7 = 0
var res7 = Boolean(str7);
console.log(res7); // false

相关文章

网友评论

      本文标题:JavaScript数据类型

      本文链接:https://www.haomeiwen.com/subject/xvwitctx.html