JavaScript 有 7 种内置类型,有分为两大类,基本类型和对象(Object)
- 六种基本类型:null,undefined,string,boolean,number,symbol
JS提供了基本类型的引用类型(包装类):Boolean,Number,String
可以通过者三个引用类型来创建相应的变量
创建一个字符串
var str = new String("text")
tip:通过引用变量生成的具有对象的属性和方法,而字面量不存在
如果给字面量的变量添加方法,它会通过以下的步骤:
var str = "hello"
var str1 = str.substring(2)
--------->
创建String类型的一个实例
var _str = new String("hello")
在实例上调用指定的方法
var str1 = _str.substring(2)
销毁这个实例
_str = null
同样的如果添加属性:
var str = "text"
str.a = "1" 此时a->new String("1")在执行结束时,就会消失,所以第三行的时候就访问不到了
console.log(str.a) //undefined
typeof 可以检验值的类型 ,返回的类型名都是以字符串方式返回
console.log(typeof 123); //"number"
console.log(typeof (typeof 123)); //"string"
- 注意null,typeof会返回“object”
console.log(typeof null); //"object"
关于数值的运算
- ++前置后置的赋值( -- 一样):后置本身会加,但不会赋值给新变量,前置就会本身加且赋值给新变量
var a = 100;
var b = a++;
console.log(a); //101
console.log(b); //100
var c = 100;
var d = ++c;
console.log(c); //101
console.log(d); //101
- 无法被类型转换为数字的值与数字运算会输出NaN , 可以用isNaN检验是否为数字,返回的是Boolean,是:false,否:true
var a = "a" / 2;
console.log(a); //"NaN"
console.log(isNaN(a)); //true, isNaN且返回的为boolean,而非string
console.log(typeof a); //"number"
console.log(typeof NaN); //"number",NaN会被typeof识别为number
- 关于NaN:会被 typeof返回“number”,NaN与数值或者null,undefined(内置方法的关键字除外)运算都是NaN,且它本身不等于自己
console.log(typeof NaN); //"number",NaN会被typeof识别为number
console.log(null + NaN); //NaN
console.log(undefined + NaN); //NaN
console.log(NaN + 1); //NaN,NaN与任何数字运算都为NaN
console.log(NaN == NaN); //false,NaN与自己不相等
- 数值的运算: 除数为0的运算结果为正无穷或负无穷, 0/0的结果为NaN
console.log(1/0); //Infinity
console.log(-1/0); //-Infinity
console.log(0.1 + 0.2 === 0.3); //false
不同类型之间的运算
console.log(1 + '2'); //12
console.log('1' + '2'); //12
console.log(2 + null); //2, null会被转化为0
console.log(2 + undefined); //NaN, undefined 会被转化为NaN
console.log(true + true); //2
undifined , null , '' ,0 ,false 之间的关系
0,false和 '' 之间相互相等,5者其余情况两两均不相等,5者之间两两全不恒等,5者取反皆与true恒等
console.log(0 == false); //true
console.log('' == false); //true
console.log('' == 0); //true
console.log(null == undefined); //true
除了以上四种成立,别的都不成立,=== 全部不成立(不相等)
console.log(true === !''); //true
console.log(true === !undefined); //true
console.log(true === !null); //true
console.log(true === !0); //true
console.log(true === !false); //true