in运算符
in运算符:对象能否使用某成员(成员包括属性和方法,方法包括对象的内置方法),如果能使用,返回true;反之,返回false。
对象是在js中是一种键值对的集合: key:value key是字符串,value是数据表达式
//eg:
var obj = {"name":"karen",age:24};
var re = "name" in obj; //右侧对象obj里面是否使用成员"name",能返回true,不能返回false
console.log(re); //true
看一个使用对象内置方法的例子:
//原型链知识
var re = {}.toString(); //toString();虽然没在{}写出来,但是是在原型链上有的
console.log(re); //"[object Object]"
var obj1 = {};
var re1 = "toString" in obj1; //"toString" 就是对象的一个内置方法名
console.log(re1); //true
eg:判断对象中是否存在某个属性
obj :对象的意思 key:属性名
function hasProperty(obj,key){
return key in obj; //如果key这里不是一个变量的形式,就要加字符串
}
这里拓展一下:obj[key] = 123; obj.key = 123; 注意两种写法区别
var key = "a";
var obj = {key:456};
obj[key] = 123; //将变量key的值"a"取出来当作属性名,且属性值为123
obj.key = 123; //将obj对象的key属性值变为123 (有key属性就改变,无就新添加一个key属性)
console.log(obj); //{a: 123, key: 123}
条件运算符(三目运算符)
注:开发时建议使用if-else
expr1?A:B //expr1表达式会做布尔判定,判定的结果为true,就会执行表达式A,否则执行B
整个三目运算表达式的结果是A或者B
结合例子看一下:
var a = 20;
var re = a>=18?20:{name:"blue"};
console.log(re); //20
function render(){
return isLogin?<User/>:</Login>; //isLogin表达式进行布尔判定
}
三目运算符使用:嵌套很难,所以一般能用if-else就用if-else,它一般用于比赛/国际比赛,和打包工具。