(?:)是一个三元运算符
(?:)跟if有些相似 可以用作 if...else 语句的快捷方式
条件? 结果1: 结果2;这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2
var b='gf'; (b == 'gf') ? a="true" : a="false"; console.log(a); 输出 --------------------------- true
var b=true; (b == false) ? a="true" : a="false"; console.log(a); 输出 --------------------------- false
typeof
typeof 可以用来检测给定变量的数据类型,可能的返回值:1. 'undefined' --- 这个值未定义;
2. 'boolean' --- 这个值是布尔值;
3. 'string' --- 这个值是字符串;
4. 'number' --- 这个值是数值;
5. 'object' --- 这个值是对象或null;
6. 'function' --- 这个值是函数。
var aa = 'my name is gaofan'; console.log(typeof aa); console.log(typeof 6); 输出 // string // number
delete
delete是一个一元操作符 它用来删除对象属性或数组元素
var num = {x :1,y:2,k:3}; delete num.x; console.log(JSON.stringify(num)) 输出{"y":2,"k":3}
var num = [1,2,3]; delete num[2]; // 删除数组最后一个元素 console.log(JSON.stringify(num)) 输出[1,2,null]
删除数组 数组长度么有改变 数组长度依然是3
viod()是一个一元运算符 操作数可以是任意数据类型 忽略计算结果返回undefined
<a href="javascript:void window.open();">打开一个新窗口</a>
eval()只有一个参数 如果传进去的参数不是字符串 他直接返回这个参数 如果参数是字符串他会把字符串当成js代码来进行编译
function a(){ eval("var x=1"); console.log(x); } a(); console.log(x); /*第一个console.log()函数能够弹出1第二个会因为x未定义而报错 eval()函数并不会创建一个新的作用域,并且它的作用域就是它所在的作用域*/
全局eval()可以申明或者改变变量
var globalEval = eval; //定义全局eval函数别名 var a ='global' //全局变量 function c(){ var a = 'jimi,'; //局部变量 eval('a+="gaofan"'); //直接更改局部变量的值 return a; //返回更改后的局部变量 } console.log(c()); //localchanged