js运算符:
1-1 delete 运算符
delete 运算符用来删除对象属性
或者数组元素
,如果删除成功
或所删除的目标不存在
,delete 将返回 true
。 然而,并不是所有的属性都可删除:
- 一些内置核心和客户端属性是不能删除的
- 通过 var 语句声明的变量不能删除
- 通过 function 语句定义的函数也是不能删除的。
例如:
var o = { x: 1, y: 2}; // 定义一个对象
console.log(delete o.x); // true,删除一个属性
console.log(delete o.x); // true,什么都没做,x 在已上一步被删除
console.log("x" in o); // false,这个属性在对象中不再存在
console.log(delete o.toString); // true,什么也没做,toString是继承来的
console.log(delete 1); // true,无意义
var a = [1,2,3]; // 定义一个数组
console.log(delete a[2]); // true,删除最后一个数组元素
console.log(2 in a); // false,元素2在数组中不再存在
console.log(a.length); // 3,数组长度并不会因 delete 而改变
console.log(a[2]); // undefined,元素2所在的位置被空了出来
console.log(delete a); // false,通过 var 语句声明的变量不能删除
function f(args){} // 定义一个函数
console.log(delete f); // false,通过 function 语句声明的函数不能删除
1-2 void 运算符
void 运算符可以应用于任何表类型的表达式,表达式会被执行,但计算结果
会被忽略并返回undefined
。
例如:
void 0;
void "useless?";
void false;
void [];
void /(useless)/ig;
void function(){ console.log("useless?"); }
void alert(1)
// always return undefined
3-3 ++ -- 运算符
++ -- 递增递减运算符借鉴自 C 语言,它们分前置型和后置型,作用是改变一个变量的值。
例如:
var a = 5;
console.log(a++); // 5 后加表不加
console.log(a); // 6
console.log(++a); // 7 先加,都有加
console.log(a) // 7
console.log(a--); // 7
console.log(a) // 6
console.log(--a); // 5
console.log(a) // 5
(加号在前面,本身和表达式都加1;加号在后面,表达式不加1,本身加1 ),减法同理。
3-4 valueOf
var a = '你好', b = 1, c = [], d = {}, e = function (){}
a.valueOf() // '好'
b.valueOf() // 1
c.valueOf() //[]
d.valueOf() // {}
e.valueOf() //ƒ (){}
3-5 +和-
"+" 操作符,如果有一个为字符串,那么都转化到字符串然后执行字符串拼接
"-" 操作符,转换为数字,相减 (-a, a * 1 a/1) 都能进行隐式强制类型转换
[] + {} // "[object Object]"
{} + [] // 0
1 + true //2
1 + false //1