博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
超级小白系列之一坨x的原始数据类型转换
阅读量:6811 次
发布时间:2019-06-26

本文共 2988 字,大约阅读时间需要 9 分钟。

数据类型

数据类型有原始值和引用值两种

  • 原始值 string number null undefined symbol boolean
  • 引用值 object

数据存放,原始值放在栈中,不能进行修改,是传值。引用值是放在堆中,是传址。

var a = 123;var b = 123;a===b; // truevar a = [1,2,3];var b = [1,2,3];a===b; // falsevar c = a;c === a; // truea = [1,2,3];c === a; // false复制代码

typeof 类型

两种写法:

  • typeof ();
  • typeof➕空格➕参数
  • typeof的返回值都是string类型
  • typeof 后的数据类型有object number string function boolean
typeof [1,2]// objecttypeof 123 // numbertypeof null// object (早期null作为对象的占位符,历史遗留问题)typeof undefined // undefinedtypeof '123'// stringtypeof function(){} // functiontypeof true // boolean复制代码

未定义一个变量a会报not a defined ,但是typeof 一个未定义的变量不会报错,会返回undefined

a是一个未声明的变量typeof a // undefinedtypeof(typeof a)// string 复制代码

原始数据类型显式转换之Number();

  • 语法: Number(a);
  • 此方法会把所有的原始数据类型中看着像是数的值变成number类型,NaN也是属于number类型
Number(123) // 123;Number(null) // 0;Number(undefined) // NaN;Number('123') // 123;Number([1,2]) // NaNNumber(true) // 1Number('123ass')// NaN复制代码

原始数据类型显式转换之parsetInt();

  • 语法: parseInt(a);
  • 此方法是将其他数据类型的转换成number数据类型的整型,也就是有理数
  • 不管是什么类型的数据,必须从数字开始,否则一律返回NaN.截止到非数字位(砍断原则)
parsetInt(123.78) // 123parseInt('123aaa')// 123parseInt("aaa")// NaNparseInt(null)// NaNparseInt('1a')// 1parseInt('a1a')//NaNparseInt(undefined)//NaNparseInt(true)// NaN复制代码

==未解决问题==:

parseInt([1,2])// 1parseInt({1:'damao'})//NaN复制代码
  • 用法二:将目标进制的数转换为十进制的数
var a = 101010;parseInt(a,2);第二位参数是目标进制复制代码

原始数据类型显式转换之parseFloat()

  • 语法: parseFloat();
  • 用法:必须以数字开头,第一个小数点不中断,当遇到非数字的时候中断;
parseFloat(123.3456)// 123.3456parseFloat(null)// NaNparseFloat(undefined)//NaNparseFloat(123.aa123)// 123parseFloat(true)// NaNparseFloat([12,23])// 12复制代码

原始数据类型显式转换之String();

  • 语法:String(a);
  • 用法:
String(123); // '123'String(undefined);// 'undefined'String(null);// 'null' String(NaN); // 'NaN'String(true);// 'true'String([1,2]); // '1,2'复制代码

原始数据类型显式转换之Boolean();

  • 语法:Boolean();
  • 用法:除去 null undefined 空串 0 false NaN 这六种之外,其余的都为true

==显式转换方法之toString()==;未完成

  • 语法:a.toString();
  • 用法一:将原始数据类型转变成string类型,但是null和undefined会报错。
  • 用法二:将10进制的数转变成目标进制的数据
var a = 15;var b = a.toString(16);console.log(typeof b);复制代码

原始数据类型隐式转换方法之isNaN();

  • 隐式转换是不明确的告诉进行转换了,但实际上是进行转换了
  • NaN和任何值都不相等,包括它自身 NaN === NaN // false
  • isNaN是判断一个数是否是NaN的方法,它的原理是先利用Number()转换为number类型,在进行判断。
isNaN([1,3])// false复制代码

原始数据类型隐式转换之 ++ / --

  • ++ / -- 在隐式转换中也是先调用Number(),然后对转换成number的类型结果在进行++或者--
var a = '123';a ++ // 124var b = '12a';b++ // NaN复制代码

原始数据类型隐式转换之 * 或者 /

同样也是需要先变成number类型

原始数据类型隐式转换之 正负号

同样也是需要先变成number类型

原始数据类型隐式转换之逻辑运算符 && || !

  • 返回值是true或者false
  • && 用法:第一个表达式是true,返回第二个表达式。第一个表达式是false,则返回第一个表达式。
  • || 用法:第一个表达式是false,返回第二个表达式。第一个表达式是true,返回第一个表达式。

原始数据类型隐式转换之大于小于号 > <

  • 返回值是true或者false
  • 两边都是字符串的时候比较的是asc码
  • NaN比较任何类型的数都是false
  • 两边都是boolean,则转换成数字再返回
2>3<1  //  true复制代码

特殊的+号

  • 规则:当两边有string类型时,都转换成string类型,变成字符串
  • 规则2:当两边不是string类型时,变成number类型
  • 减号不同的是 - 会转换成number,比如 123 - '12' = 111 {number 类型};
123 + 123 //  246;123 + "123"//  '123123'123 + null //123123 + undefined // NaN123 - undefined // 复制代码

零碎的小知识

  • null == undefined // true
  • JavaScript的最初版本是这样区分的:null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

转载地址:http://dqqwl.baihongyu.com/

你可能感兴趣的文章