★04.表达式和运算符

2017-07-03  本文已影响0人  iDragonfly

表达式

原始表达式

1.23
"hello"
/pattern/

true
false
null
this

i
sum
undefined

对象和数组的初始化表达式

{}
{ topic: "JavaScript", fat: true }

[]
[1 + 2, 3 + 4]

函数定义表达式

function plus1(x) { return x + 1; }

属性访问表达式

var o = {x: 1, y: {z: 3}};
var a = [o, 4, [5, 6]];
o.x
o.y.z
o["x"]
a[1]
a[2]["1"]
a[0].x

调用表达式

f(0)
Math.max(x, y, z)
a.sort()

对象创建表达式

new Object()
new Point(2, 3)

// 不需要传入任何参数给构造函数时,可以省略括号
new Object
new Date

运算符

算术运算符

基本算术运算符

加法算术运算符 —— +

1 + 2 + "blind mice"    // => "3 blind mice"

其他算术运算符 —— -*/%

一元算术运算符 —— +-++--

位算术运算符 —— &|^~<<>>>>>

关系运算符

相等与不等运算符 —— =====!=!==

比较运算符 —— <><=>=

in运算符

var point = {x : 1, y : 1};

"x" in point            // true
"z" in point            // false
"toString" in point     // true

var data = [7, 8, 9];
"0" in data             // true
1 in data               // true
3 in data               // false

instanceof运算符

var d = new Date()
d instanceof Date;      // true
d instanceof Object;    // true
d instanceof Number;    // false

var a = [1, 2, 3];
a instanceof Array;     // true
a instanceof Object;    // true
a instanceof RegExp;    // false

逻辑运算符 —— &&||!

赋值运算符 —— =+=-=

表达式计算 —— eval()

x = 1;
eval("x = 2")       // 改变局部变量x的值
var foo = function(a) {
    eval(a);
};
foo("return; ");    // eval()的上下文环境就是函数调用的环境,即全局环境,在全局上下文中使用return会报错
var geval = eval;
var x = "global", y = "global";
function f() {
    var x = "local";
    eval("x += 'change';");     // 此x是局部x
    return x;
}

function g() {
    var y = "local";
    geval("y += 'changed';");   // 此y是全局y
    return y;
}

console.log(f(), x);
console.log(g(), y);

其他运算符

typeof()运算符

x typeof(x)
undefined "undefined"
null "object"
true或false "boolean"
任意数字或NaN "number"
任意字符串 "string"
任意函数 "function"
任意内置对象(非函数) "object"
任意宿主对象 由编译器各自实现的字符串

delete运算符

var o = {x : 1, y : 2};
delete o.x;
o.y = undefined
"x" in o                    // false
"y" in o                    // true

var a = [1, 2, 3];
delete a[2];
2 in a;                     // false
a.length                    // 3:依旧是3

void运算符

上一篇 下一篇

猜你喜欢

热点阅读