js运算符
=== 全等 判断左右两边对象或值是否类型相同且值相等。
var a ="123";
var b ="123";
var oa= new String("123");
var ob= new String("123");
var oc = oa;
a===oa //false
oa===ob //false
oa===oc //true
a=b //true
==判断操作对象两边或者值是否相等
两边转化成数值类型 并进行比较
"99"==99 //true
new String("99") ==99; //true
true = 1 //true
例外规则:
null == undefined (true)
null/undefined进行==运算时不进行隐式类型转化。
0==null //false
null==false //false
"undefined"== undefined //false
逻辑运算符!
!x 表示x表达式运行结果转化成boolean值后取反。
!!x 表示去x表达式运行结果的Boolean值
eg: var obj ={};
var a =!obj; //a=false
var a =!!obj //a=true
逻辑运算符&&
逻辑||运算符
思考:1-0&&2 (先计算1-0结果2, 还是先计算0&&2结果1) //2 先运行1-0
+、-、*、/、%优先级高于 && ,
*、/、% 优先级高于 - ,
&&运算符 高于 条件运算符 ? :
算术操作符 → 比较操作符 → 逻辑操作符 → "="赋值符号
逗号运算符 :var val=(1,2,3); //val=3 取最右边的
delete运算符 :
var obj = {x:1};
obj.x; //1
delete obj.x;
obj.x; //undefined
从ie9之后 有 var obj={};
Object.defineProperty(obj,'x',{
configurable : false,
value:1
});
delete obj.x //false
obj.x; //1
in运算符: 判断对象是否有这样的key
window.x=1;
'x' in window; //true
instanceof type
new运算符 对象.hasOwnProperty('属性') 可以判断这个属性是对象上的还是这个对象的原型链上的。
对象._proto_.hasOwnProperty('属性'); 拿到对象原型上的属性,而不是对象本身的属性。
this运算符
void