【慕课学习】《JavaScript深入浅出》——表达式与运算符

表达式

js表达式有以下几种类型:

原始表达式
初始化表达式
函数表达式
属性访问表达式
调用表达式
对象创建表达式

原始表达式包括:

常量、直接量     3.14,"a"
关键字          null,this,true
变量            i,k,j

原始表达式和原始表达式之间可以通过运算符复合成复合表达式,如:3*4。

数组、对象的初始化表达式:

[1,2]
{x:1,y:2}

函数表达式

var fe = function(){};
(function(){alert("ok")})();

属性访问表达式

var o = {x:1};
o.x  或  o['x']  (二者等价)

调用表达式,即调用函数的表达式:

func();

对象创建表达式

new Func(1,2);
new Object;//new Object(),当参数为空时,可以省略括号

运算符

按操作数的数量来分类,可以分为:

一元运算符: +num
二元运算符: a+b
三元运算符: c?a:b

按功能来分:

赋值:   x += 1
比较:   a == b; a < b
算术:   a - b
位:     a | b
逻辑:   &&,||,AND,OR
字符串: "a" + "b" (这里的“+”号是字符串连接运算符)
特殊:   delete obj.x

以下是常用的特殊运算符:
1、条件运算符:c?a:b
表达式c会返回一个boolean值,若返回的值为true,则取a;若返回的值为false,则取b,如:(2>3?2:3) -> 3

2、逗号运算符:a,b
从左到右依次计算各表达式的值,最后返回最后一个表达式的值作为返回结果。
var a = (1,2,3); // a = 3

3、delete运算符,用于删除对象的属性:delete obj.x

var obj = {x:1};
obj.x; //1
delete obj.x; //true
obj.x; //undefined

从ie9开始有了Object.defineProperty方法,可以用来设置属性是否可编辑:

var obj = {};
Object.defineProperty(obj,'x',{
    configurable:false,//设置属性是否可编辑
    value:1
});
delete obj.x; //false
obj.x; //1

4、in运算符,判断对象中是否有某个key:

window.x = 1;
'x' in window; //true

5、instanceof/typeof运算符:
Instanceof基于原型链判断对象的类型,返回一个boolean值;
typeof适用于判断原始类型和函数对象,返回一个string字符串。

6、new 运算符,用于创建对象,可以用来创造构造器的实例:

function foo(){};
foo.prototype.x = 1;
var obj = new Foo();
obj.x; //1
obj.hasOwnProperty('x'); //false,用hasOwnProperty判断是否是实例自身的属性
obj._proto_.hasOwnProperty('x'); //true

7、this运算符,this在不同的情况下代表不同的值:

this; //window(浏览器),全局this
var obj = {
    func:function(){return this;}
};
obj.func(); //obj

8、void运算符,总是返回undefined:

void(0); //undefined;
void 0;
void('str'); //undefined
void 'str';

另外很重要的一点是运算符的优先级,具体可以参考这个链接:https://technet.microsoft.com/zh-cn/library/z3ks45k7 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值