简单数据类型间的转换

295 阅读5分钟

一、Number类型

1、分类

1.1 整数、浮点数

 浮点数溢出(如0.1+0.2 = 0.3是错误的)

解决方法:把浮点数转成整数,再除一个10,如:(1+2)/10

1.2 三种进制

1.3 科学计数法

1.4 Number.MAX_VALUE和Number.MIN_VALUE

1.5 Infinity和-Infinity

1.5.1 关于infinity的计算:加减乘除一个数都是infinity; 自身加乘为 infinity;自身减除为NaN1.5.2 关于infinity的比较:与自身相等,其余正常比较;

1.6 NaN(not a number)

1.6.1 与任何值进行比较都返回false1.6.2 与任何值进行运算都为NaN1.6.3 isNaN()方法:检测是否为非纯数字

 检测前会先把传入的参数转换为number类型。 (tip:空字符串、空格字符串 转为number都是0)

    返回false:为纯数字

    返回true:为非纯数字

isNaN()的应用。example:要求用户键入电话号码

//1、获取元素

var oIpt = document.getElementById("ipt");

var oBtn = document.getElementById("btn");

//2、创建点击事件

oBtn.onclick = function() {

//3、获取并判断元素中的值是否为空

if(oIpt.value.length == 0) {

alert("电话号码不能为空!");

} else if(isNaN(oIpt.value)) {

//4、判断是否为NaN

alert("请输入合法的电话号码!");

} else {

alert("成功!");

}

}

2、类型转换为Number的方法

法一:Number()方法强制转换

1)、number—>number:转为10进制,NaNInfinity为本身。

2)、string—>number2.1) 纯数字的字符串直接转为number2.2) 进制转为十进制 (8进制由于是以0开头的,导致有些浏览器会把它当成十进制直接转为number,所以为了统一,写8进制的时候要注明; (如:将8进制的a转换numberconsole.log(Number(a,8)););

    2.3) 只要含有非数字(除进制标识、Infinity、科学计数法以外)都是NaN2.4) 空字符串' '、空数组[ ]、空格、nullfalse都转为03)、Boolean—>number10

4)、undefined—>numberNaN

5)、null—>number0

6)、object—>number6.1) 空数组为06.2) 仅有一个值的数组把那个值转为number6.3) 其余都为NaN(包括对象);

7)、总结:

  •  空字符串' '、空数组[ ]、空格、null、false ——>0;

  •  { }、undefined ——>NaN

法二:parseXxx()方法

    parseInt()方法

1)、从左往右依次扫描,遇到非数字(包括小数点)则跳出, 输出非数字之前的合法数字。如:parseInt("24a8u0");输出24

2)、以0x开头的输出为16进制

3)、parseInt()支持基模式:把不同进制的数转为十进制

可以转为其它特殊进制,利用,号隔开。如:

 // 特殊情况如下:

 // 没有1进制的1、0;有0进制的1、0  。

console.log(parseInt(1,1));//NaN,1进制的1是NaN

console.log(parseInt(0,1));//NaN,1进制的0是NaN

console.log(parseInt(0,0));//0,0进制的0是0

console.log(parseInt(1,0));//0,0进制的1是1

 4)、parseXXX只能转换数字或字符串为number, 不能转换其它类型的值(如null、true等)

    parseFloat()方法

 1)、与parseInt()类似,但是不能转换数字

 2)、从左往右扫描,扫描到的第一个点当成小数点, 之后遇到非法数字则跳出(包括第二个点)

法三:利用算数运算隐式转换

1)、乘1

2)、除1

3)、减0

二、String类型

1、分类

1)、字符串直接量

使用单双引号都可以,不能同类嵌套使用;可以单双嵌套;

在ES3中,字符串必须在一行书写,换行不允许, 如果要显示换行,需要添加换行符(\n); 在ES5中,写代码时允许字符串换行写(不是多行显示在浏览器,如果多行显示 需要\n),实现方法:在换行处添加一个反斜杠;

var str = "今天天气\

真好,\

我打算\

去学习。";

字符串中每一个字符都有固定的位置,第一个字符的位置是0;

2)、转义字符(添加反斜杠)

" 表示“。' 表示‘。

\r 是回车=return,使光标到行首。

\n 是换行=newline,使光标下移一格。

\t 制表符 = 按一个table建。

\ 打印出\。

2、相关操作

1)、拼接:利用+号拼接字符串与其它。(字符串+其它)

2)、获取长度:str.length属性

3)、在ES5以上,可以对字符串进行数组的相关操作,读取下标等。

4)、Example:判断用户提交的信息是否正确

//1、获取元素

var oUser = document.getElementById(user);

var oPwd = document.getElementById(user);

var oBtn = document.getElementById(user);

//2、创建点击事件

oBtn.onclick = function() {

//获取元素里的值

var uName = oUser.value;

var uPwd = oPwd.value;

//判断是否为空

if(){

}

}

3、类型转换为String的方法

法一:String()强制类型转换

1)、null—>String:转为"null"

2)、undefined—>String:转为"undefined"

3)、unmber—>String

3.1) 非十进制先转换为十进制

3.2) 其它值直接转成相应的字符串

4)、Boolean—>String:转为true或false

5)、object—>String

String([])—>""

String([1])—>"1"

String([1,2])—>"1,2"

String([1,010])—>"1,8"

String({})—>"[object Object]"

法二:对象或值的toString()方法

1)、非string会隐式调用String()方法

2)、unll和undefined没有toString()方法

3)、其它与String()类似

三、Boolean类型

1、类型:true、false

2、转换为Boolean类型

 1)、unll—>boolean:false

 2)、undefined—>boolean:false

3)、number—>boolean:除了0和NaN,其它都为true。

4)、string—>boolean:空字符串为false。其余为true(包括字符串0:"0",包括空格字符串:" ")。

 5)、object—>boolean:都为true。

 6)、Example:若input为空则把边框变红。

oBtn.onclick = function() {

//获取元素中的值

//if判断值是否为空(3种写法)

//元素.style.borderColor = "red";

}

四、操作符

1、分类

1)、一元运算符

1)自增

2)自减

2)、二元运算符

1)逗号

3)、三目运算符

2、运算符的优先级