表达式
JS中的一个短语,解释器会将其计算出一个结果。
变量名也是一种简单的表达式,它的值就是复制给变量的值。
复杂表达式:使用运算符,由简单表达式组成
原始表达式
表达式的最小单位,包含常量或直接量、关键字和变量
//直接量
1.23
"hello"
/pattern/
//保留字
true
false
null
this
//变量
i
undefined
* 对象和数组的初始化表达式*
var Array=[1,2,3];
var matrix=[[1,2,3],[3,4,5],[7,8,9]]; //可以嵌套
var sparseArray=[1, , ,4]; //空位会填充undefined
var p ={x:2.3, y:-1.3}; //一个拥有两个属性成员的对象
var q={};
q.x=2.3;q.y=-1.3
var aquare={"upperLeft":{x:p.x,y:p.y},"lowerRight":{x:p.x+side,y:p.y+side}}; //可以嵌套
属性访问表达式
var o={x:1,y:{z:3}};
o.x=1;
o.y.z=3;
o["x"]=1;
var a=[o,4[5,6]];
a[1]=4;
a[2]["1"]=6;
a[0].x=1;
函数表达式
var fe=function(){};
调用表达式
func();
对象创建表达式
new Func(1,2);
new Object;
运算符
一元:+num
二元: a+b
三元: c?a:b
- 算术运算符
+、-、*、%、/、++、–
1+2 //3
"1"+"2" //"12"
"1"+2 //"12"
1+{} //"1[object Object]"
true+true //2
2+null //2+0=0
2+underfined //2+NaN
1+2+" blind mice"; //"3 blind mice"
1+(2+" blind mice"); //"12 blind"
- 赋值运算符
=、+=、-=、*=、/=、%= - 字符串操作
- 比较运算符
==、===、!=、!==、>、<、>=、<=
严格相等”===”
类型不同,不相等
都是null或者undefined,不相等
都是true或者false,相等
一个NaN、两个都是NaN。NaN与任何值都不相等,包括它本身。(通过x!==x判断x是否为NaN,只有在x为NaN时,才得到true)
数字和字符串比较
11<3 //false
"11"<3 //false
"11"<"3" //ture ,Unicode字符编码标准按字符逐位顺序比较
5.逻辑运算符
&&、||、!
- 条件运算符(三步运算符)
X<10? “X比10小”:”X比10大”
<body>
<p>i=10,j=10;i+j=?</p>
<p id="sumid"></p>
<button onclick="MySum()">结果是</button>
<script>
function MySum(){
var i=10;
var j=10;
var m=i+j;
document.getElementById("sumid").innerHTML=m;
}
</script>
</body>
7.in运算符
左边:字符串、可转换为字符串
右边:一个对象
var point={x:1,y:1};
"x" in point //true
"z" in point //false
"toString" in point //true,对象继承了toString方法
/*只判断键值*/
var data=[7,8,9];
"0" in data //true
1 in data //true
3 in data //false
<script>
var i=[1,2,3];
var j;
for(j in i){
document.write(i[j]+"<br/>");
}
</script>
8.instanceof运算符
左边:对象
右边:类
var d=new Date();
d instanceof Date; //true
d instanceof Object; //true
var a=[1,2,3];
a instanceof Array; //true
a instanceof Object; //true
9.eval()
var geval=eval;
var x="global",y="global";
function f(){
var x="local";
eval("x+='changed';"); //eval更改了局部变量的值
return x;
}
function g(){
var y="local";
geval("y+='changed';"); //geval更改了全局变量的值
return y;
}
console.log(f(),x); //输出"local changed global"
console.log(g(),y);//输出"local global changed"
10.typeof运算符
返回值表示操作数类型
功能:
1.检查一个变量是否存在、是否有值
2.判不等于断一个值不等于undefined也不等于null
3.区分对象值和原始值
4.判断原始值的类型、是否是函数
分类:
undefined –>”undefined”
null –>“object”
true/false –>”boolean”
数字/NaN –>”number”
字符串 –>”string”
函数 –>”function”
(内置对象)非函数 –>”object”
宿主对象
11.delete运算符
删除操作。删除后不仅仅设置了undefined的值,但可以用in运算符检验是否存在。通过var语句声明的变量不能删除,function定义的函数和函数参数也不能删除
var o={x:1,y:2};
delete o.x; //删除对象属性,返回true
typeof o.x; //"undefined"
"x" in o; //false
delete o; //o由var定义,不能删除,抛出异常
var a=[1,2,3];
delete a[2];
2 in a; //false
a.length; /*3
*删除了元素,依然留下了位置,数组长度并没有改变
*/
12.void运算符
//通过给<a>的onclick绑定一个事件处理程序
<a href=""javascript:void window.open();">打开一个新窗口</a>
13.位运算符