在上章学习了:1.qml-ECMAScript学习(语法、关键字、原始值和引用值)
本章学习:
- 4种基础类型Undefined 、Boolean 、Number 、String
- var.toString() : 转换成字符串方法
- parseInt(var) : 解析整数方法
- parseFloat(var) : 解析浮点数方法
- Boolean(var) : 转换成bool类型,如果var至少是有一个字符的字符串、或者非 0 数字或对象时,将返回true
- Number(var) : 转换为数字方法
- String(var) : 转换为字符串方法
Undefined类型
Undefined 类型只有一个值undefined。当声明的变量未初始化时,该变量的默认值是 undefined
var temp; console.log(typeof temp); // undefined console.log(temp); // undefined
Null 类型
Null类型只有一个值null,比如当我们需要释放一个引用对象时,就需要用null来释放
var arr = new Array(5); // 只要是new出来的对象都是引用值,所以arr是个引用对象 arr = null; // 释放一个引用对象
Boolean 类型
Boolean类型只有两个值false和true,需要注意的是true表示的是非0的意思.而false表示的是0的意思.
所以true || false = true,true && false = false
var bFound = true || false; var bLost = true && false; console.log(bFound,bLost); // true false
Number 类型
要定义浮点值,必须包括小数点和小数点后的一位数字(例如1.0)。
这被看作浮点数字面量。对于非常大或非常小的数,可以用科学计数法表示浮点数.例如:
var fNum1 = 5.618e7 // 5.618 x 107 var fNum2 = 8-e17 // 0.00000000000000008
Number提供的几个特殊值
- Number.MAX_VALUE : 定义了数值最大值,我这里的值为1.7976931348623157e+308
- Number. MIN_VALUE : 定义了数值最小值,我这里的值为5e-324
- Number.POSITIVE_INFINITY: 无穷大,值为Infinity
- Number.NEGATIVE_INFINITY: 无穷小,值为-Infinity
并且提供了2个方法判断Number是否有效
- isFinite(number) : number如果是无穷的,则返回false,有穷则返回true
- isNaN(val) : 判断val是否非数字,返回true,则表示非数字
示例如下:
var maxValue = Number.MAX_VALUE; var minValue = Number.MIN_VALUE; console.log(maxValue) // 1.7976931348623157e+308 console.log(minValue) // 5e-324 console.log(Number.POSITIVE_INFINITY) // Infinity console.log(Number.NEGATIVE_INFINITY) // -Infinity if (isFinite(10000)) { console.log("10000 = 有穷数") // 10000 = 有穷数 } var value = maxValue * maxValue; if (!isFinite(value)) { console.log("maxValue * maxValue = 无穷的数") // maxValue * maxValue = 无穷的数 } var value2 = "0.0.1324"; console.log( isNaN("blue")) // true console.log( isNaN(value2)) // true console.log( isNaN("666")) // false console.log( isNaN(1000)) // false
String 类型
在ECMAScript中,单引号和双引号一样,都可以用来字符串或者字符上,比如:
var sColor1 = "red"; var sColor2 = 'red';
toString()转换成字符串
ECMAScript 对所有对象提供了 toString() 方法,对于Number类型,默认打印的是十进制,也可以通过传参的方式来改变进制,比如:
var color = "red"; var visible = true; var value1 = 0.1324; var value2 = 10; console.log( color.toString()) // red console.log( visible.toString()) // true console.log( value1.toString()) // 0.1324 console.log( value2.toString(2)) // 打印二进制 1010 console.log( value2.toString(8)) // 打印八进制 12 console.log( value2.toString(16)) // 打印十六进制 a
parseInt(var)和parseFloat(var)解析字符串到数字
ECMAScript提供了 parseInt(var) 和 parseFloat(var)方法,用来解析字符串转换为数字,如果不能转换则返回NaN.
parseInt()解析时会去检查字符串是否有效,比如"1010",就会作为十进制进行解析.
"0xFF"作为十六进制解析.而"FF"则会返回NaN.如果要正确解析其它进制,可以通过第二个参数来改变,然后返回的是个十进制值.
示例如下:
console.log( parseInt("red")) // NaN console.log( parseFloat("true")) // NaN console.log( parseInt("11.1324")) // 11 console.log( parseFloat("11.1324")) // 11.1324 console.log( parseInt("0010")) // 10 console.log( parseInt("0xFF")) // 255 console.log( parseInt("FF")) // 由于没有0x开头所以动态解析失败,打印"NaN" console.log( parseInt("1010",2)) // 由于都是数字,则解析十进制,打印"10" console.log( parseInt("10",8)) // 解析八进制,打印"8" console.log( parseInt("FF",16)) // 解析十六进制,打印"255" console.log( parseInt("1AAA1.1324")) // 遇到非数字停止解析,打印"1" console.log( parseFloat("11.13.AAA4")) // 遇到非数字停止解析,打印"11.13"
Boolean(var) 强制类型转换成布尔类型
ECMAScript提供了Boolean(var)方法.把给定的值强制转换成 Boolean 型
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。
如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。
示例如下所示:
console.log(Boolean("")); //false - 空字符串 console.log(Boolean("hello")); //true - 非空字符串 console.log(Boolean(50)); //true - 非零数字 console.log(Boolean(null)); //false - null console.log(Boolean(0)); //false - 零 var onj= new Object; console.log(Boolean(onj)); //true - 对象
Number(var)强制类型转换成数字
ECMAScript提供了Number(var)方法. 把给定的值强制转换成数字(可以是整数或浮点数)
Number()转换的值如果是字符串,那么字符串必须得是完整值,和 parseInt() 和 parseFloat() 方法不一样,而不是部分值.
而对于其它类型转换也有所不同,示例如下:
console.log(Number(false)); // 0 console.log(Number(true)); // 1 console.log(Number(undefined)); // NaN console.log(Number(null)); // 0 console.log(Number("1.2")); // 1.2 console.log(Number("12")); // 12 console.log(Number("1.2.3")); // NaN console.log(Number(50)); // 50
String(var)强制类型转换成字符串
ECMAScript提供了String(var)方法. 把给定的值强制转换成字符串.
和toString()方法类似,但是对于 null 和 undefined 值强制类型转换可以生成字符串而不引发错误,示例如下:
console.log(String(null)); // "null" var oNull = null; console.log(oNull.toString()); // 会引发错误,null没有toString()方法
未完待续,下章我们来学习3.qml-ECMAScript(Object基类对象、String对象)