- 内置类型:null,undefined,string,number,boolean,symbol
- Symbol实例是唯一且不可改变的
Symbol(1)==Symbol(1)//false
- 获取元素类型 Object.prototype.toString.call(x)
let a=1;
console.log(Object.prototype.toString.call(a))//"[object Number]"
let b=[]
console.log(Object.prototype.toString.call(b))//"[object Array]"
let d;
console.log(Object.prototype.toString.call(d))//"[object Undefined]"
let c=null
console.log(Object.prototype.toString.call(c))//"[object Null]"
- 条件判断:在条件判断时,除了
undefined,null,false,NaN,'',0,-0,转为false,其他的值都转为true,包括所有的对象
- JavaScript对象转为基本类型 对象转化为基本数据类型,始终调用对象自带的valueOf和toString两个方法,并获得其返回值,作为其基本数据类型。
valueOf() 返回指定对象的原始值
- Array返回数组对象本身
- Boolean 返回布尔值
- Date 存储的时间是从1970年1月1日午夜开始计的毫米数
- Function 返回本身
- Number 数字值
- Object 对象本身
- String 字符串值
- Math 和 Error对象没有valueOf方法
toString()
- 每个Objext对象都包含该方法
- 当Object对象以字符串方式移动时会被自动调用
- 默认调用时返回[object type]
Object.prototype.valueOf()//返回指定对象的原始值
Object.prototype.toString()//返回对象的字符串表示
a='1'
"1"
a.valueOf()
"1"
b='fsafds'
"fsafds"
b.valueOf()
"fsafds"
a=new Date()
Thu Dec 06 2018 22:25:39 GMT+0800 (中国标准时间)
a.valueOf()
1544106339540
[].valueOf()
[]
[].toString()
""
true.valueOf()
true
true.toString()
"true"
new String('1').valueOf()
"1"
new String('1').toString()
"1"
b={}
{}
b.valueOf()
{}
b.toString()
"[object Object]"
[1].valueOf()
[1]0: 1 length: 1__proto__: Array(0)
[1].toString()
"1"
[1,2,3].toString()
"1,2,3"
比较运算,操作符 ==
比较运算 x==y,x和y是值,产生true或者false
- 若typeof(x)与typeof(y)相同,则
- 若typeof(x) 为 undefined,则返回true
- 若typeof(x) 为 null,返回true
- 若typeof(x) 为 number,则
- 若x为NaN,返回false
- 若y为NaN,返回false
Number('sfd')==Number('fsdfds')//false - 若x与y为相等数值,返回true
- 若x为+0且y为-0,返回true
- 若x为-0且y为+0,返回true
- 若typeof(x) 为string,则当x和y为完全相同的字符序列时返回true,否则返回false
- 若typeof(x) 为boolean,x和y相同时返回true,否则返回 false
- 若x为null且y为undefined,返回true
- 若x为undefined且y为null,返回true
- 若x为typeof(x)为number,且typeof(y)为stirng,比较 x==Number(y)的结果
- 若x为string,y为number,返回比较Number(x)==y
- 若x为boolean,返回Number(x)==y 的结果
- 若y为boolean,返回 x==Number(y)的结果
- 若 x为string或number,且type(y)为Object,返回 x与y对象转基本类型