02-JS基础-数据类型

2018-05-08  本文已影响0人  xiaohan_zhang
1 B(Byte字节) = 8 bit(位)
1 KB(KByte) = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
数据类型

String    字符串 (基本数据类型)
Number   数值 (基本数据类型)
Boolean   布尔值 (基本数据类型)
Null     空值 (基本数据类型)
Undefined  未定义 (基本数据类型)
Object     对象 (引用数据类型)

console.log(typeof 123); // number
var num = 10;
console.log(typeof num); // number
var str1 = "hello";
var str2 = 'world';

var str3 = "hello "world""; // 错误
var str4 = 'hello 'world ''; // 错误
var str5 = "hello 'world'"; // 正确
var str6 = 'hello "world"';// 正确

// 不想''和 "" 混用,可以用转义字符
console.log('我说:"今天天气不错"');  // 我说:"今天天气不错"
console.log("我说:\"今天天气不错\"");
/*
* \" 表示 "
* \' 表示 '
* \n 表示 换行
* \t 表示 制表符
* \\ 表示 \
* */
var num1= 123;
var num2= 3.14;
console.log(typeof num1); // number
console.log(typeof num2); // number

// 浮点数计算可能得到不精确结果
console.log("0.1 + 0.2 = " + a); // 0.30000000000000004

最大值:Number.MAX_VALUE

console.log(Number.MAX_VALUE);  // 1.7976931348623157e+308

最小值(大于0的最小值):Number.MIN_VALUE

console.log(Number.MIN_VALUE);  // 5e-324

无穷大:Infinity, 如果超过了最大值就会返回该值

console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
console.log(typeof Infinity); // number

无穷小:-Infinity, 如果超过了最小值就会返回该值

 console.log(typeof -Infinity); // number

NaN :非法数字(Not A Number),JS中当对数值进行计算时没有结果返回,则返回NaN

console.log("abc" * "abc"); // NaN
console.log(typeof NaN); // number
console.log(Boolean(0));  // false
console.log(Boolean(1)); // true
console.log(Boolean(-1)); // true
console.log(Boolean(Infinity)); // true
console.log(Boolean(-Infinity)); // true
console.log(Boolean(NaN)); // false
console.log(Boolean("abc")); // true
console.log(Boolean("")); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(null)); // false
var test1= null;
console.log(typeof test1); // Object
var value1 = undefined;
console.log(typeof value); //结果是undefined

var value2;
console.log(typeof  value2); //结果是undefined

undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true。

var test1 = null;
var test2 = undefined;
console.log(test1 == test2); // true
console.log(test1 === test2); // false
数据类型转换
  1. 调用被转换数据类型的toString()方法。
var num = 100;
var num1 = num.toString();
console.log(typeof num); // number
console.log(typeof num1); // string

var b = true;
var b1 = b.toString();
console.log(typeof b); // boolean
console.log(typeof b1); // string

var n = NaN;
var n1 = n.toString();
console.log(typeof n); // number
console.log(typeof n); // string

注:
1)null 和 undefined 这两个值没有toString()方法。
2)toString() 方法不会影响到原变量,它会将转换的结果返回。

数值类型的toString(),可以携带一个参数,输出对应进制的值。

var num = 20;
var res1 = num.toString(2);
var res2 = num.toString(8);
var res3 = num.toString(10);
var res4 = num.toString(16);
console.log(res1); // 10100
console.log(res2); // 24
console.log(res3); // 20
console.log(res4); // 14
  1. 调用String()函数
    有些值没有toString(),这个时候可以使用String()。比如:undefined和null。
    对于Number和Boolean实际上就是调用的toString()方法
var res1 = String(10); 
console.log(typeof res1); // string

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

对于null 和 undefined,就不会调用toString()方法(因为没有这个方法),而是在内部生成一个新的字符串。

var res3 = String(undefined);
console.log(typeof res3); // string

var res4 = String(null);
console.log(typeof res4); // string
  1. 将被转换的数据和 + "" 连接到一起
    任何数据和 +"" 连接到一起都会转换为字符串,内部实现原理和String()函数一样。
var res1 = 10 + "";
console.log(typeof res1); // string

var res2 = true + "";
console.log(typeof res2); // string

var res3 = undefined + "";
console.log(typeof res3); // string

var res4 = null + "";
console.log(typeof res4); // string
  1. 调用Number()函数

1)如果是纯数字的字符串,则直接将其转换为数字。

var res1 = Number("123");
console.log(typeof  res1); // number

2)如果字符串中有非数字的内容,则转换为NaN。

var res2 = Number("123ab");
console.log(res2); // NaN    

3)如果是空字符串或全是空格的字符串,则转换为0。

var res3 = Number("");
console.log(res3); // 0

var res4 = Number( "    ");
console.log(res4); // 0
var res5 = Number(true);
console.log(res5); // 1

var res6 = Number(false);
console.log(res6); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
  1. parseInt() 方法和 parseFloat() 方法
    Number()函数中无论混合字符串是否存在有效整数都会返回NaN,利用 parseInt() / parseFloat() 可以提取字符串中的有效整数。
    parseInt() / parseFloat(),两者之前的区别是前者只能提取整数,后者可以提取小数。
var res7 = parseInt("300px");
console.log(res7); // 300

var res8 = parseInt("300px250");
console.log(res8); // 300

var res9 = parseInt("300.2px");
console.log(res9); // 300

var res10 = parseInt("abc123");
console.log(res10);  //NaN

var res11 = parseInt("");
console.log(res11);        // NaN,Number("")返回0
var res12 = parseFloat("20.5px");
console.log(res11); // 20.5

var res13 = parseFloat("20.5.5.5px");
console.log(res12); // 20.5

var res14 = parseFloat("abc20.5");
console.log(res13); // NaN

var res15 = parseFloat("20abc");
console.log(res14); // 20

对非String使用parseInt()或parseFloat(), 会先将其转换为String然后在操作。

var res16 = parseInt(true); // 这里相当于parseInt("true");
console.log(res16); // NaN
  1. 利用算数运算
    任何类型与Number 进行 减、乘、除、取模运算,都会先转为Number。
var a = "10";
var res17 = a - 0;
console.log(typeof res17); // number
var res18 = a * 1;
console.log(typeof res18); // number
var res19 = a / 1;
console.log(typeof res19); // number
  1. 利用 + 正号
    正号运算时,对于非Number类型的值,会将先转换为Number,然后再运算
var res = +true;
console.log(res);   // 1
console.log(typeof res); // number
  1. 使用Boolean()函数
console.log(Boolean(123));  // true
console.log(Boolean(0));    // false
console.log(Boolean(NaN));  // false
console.log(Boolean("abc")); // true
console.log(Boolean(" "));   // true
console.log(Boolean(""));    // false
console.log(Boolean(null));  // false
console.log(Boolean(undefined)); // false
  1. 利用逻辑非表达式
var num = 10;
num = !!num;
console.log(num);  // true
  1. 二进制转换八进制
           00 001 001
 结果:    0    1    1 = 011
 console.log(parseInt("011", 8)); // 十进制 9
  1. 二进制转换十六进制
         0001 1011
  结果:    1      b = 0x1b
  console.log(parseInt("0x1b", 16));// 十进制 27

参考极客江南简书:https://www.jianshu.com/p/f953f5ba1d84

上一篇 下一篇

猜你喜欢

热点阅读