一.表达式
表达式是指能计算出值的任何可用程序单元。—Wiki
表达式是一种JS短语,可使JS解释器用来产生一个值。—《JS权威指南》
1.原始表达式
a.常量、直接量,如3.14,"test"
b.关键字,如null,this,true
c.变量,如i,k,j
2.复合表达式
[1,2]:new Array(1,2);
[1,,,4]:[1,undefined,undefined,4]
{x:1,y:2}:var o = new Object(); o.x=1;o.y=2;
4.函数表达式
var fe = function(){}; (function(){console.log('hello world');})();
5.属性访问表达式
var o={x:1}; o.x o.['x']
6.调用表达式
func();
7.对象创建表达式
//用new来建一个构造器或函数,可以传参 new Func(1,2); //如果没有参数,可以把括号直接省略 new Object;
二.运算符
1.按操作数个数分类
一元:+num
二元:a+b
三元:c?a:b
2.按功能分类
a.赋值运算符:x+=1
b.比较运算符:a==b
c.算术运算符:a-b
d.位运算符:a|b
e.逻辑运算符:exp1&&exp2
f.字符串运算符:"a"+"b"
g.特殊运算符:
条件运算符:
var val=true?1:2;//val=1
delete运算符:
var obj = {x:1}; obj.x; //1 delete obj.x obj.x; //undefined
逗号运算符:a,b
var val=(1,2,3);//val = 3
IE9开始,新增了Object.defineProperty方法,此方法可以设置configurable属性,如果它被设置成false,就不能delete掉。
var obj = {}; Object.defineProperty(obj, 'x', { configurable: false, value:1 }); delete obj.x;//false obj.x; //1
in运算符:
window.x = 1; 'x' in window;//true
instanceof、typeof运算符:
{} instanceof Object //true typeof 100 === 'number' //true
new运算符:
function Foo(){} Foo.prototype.x = 1; var obj = new Foo(); obj.x; //1 obj.hasOwnProperty('x'); //false obj._proto_.haOwnProperty('x');//true
说明:hasOwnProperty方法可以用来判断属性是对象上的还是对象的原型链上的。
this运算符:
this; //window(浏览器) var obj = { func: function() {return this;} }; obj.func();//obj
运算符void:不管void后的操作数是多少,都会返回undefined
void 0 //undefined void(0) //undefined
视频学习地址:http://www.imooc.com/video/5801