初窥javaScrit权威指南,第四章表达式和运算符

来源:互联网 发布:网络接入设备集线器 编辑:程序博客网 时间:2024/06/06 06:48

原始表达式:

表达式的最小单位包括:直接量、常量、关键字和变量。1.23 //直接量 "hello" //字符串直接量/pattern/  //正则表达式直接量turefalsenullthisisumundefined

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

数组:[],[1+2,2+3]var mtrix = [[1,2],[2,3]];var space = [1,,,,5]; // 其他的是undefined对象:var p = {x:2,y:3};var p = {};可以嵌套var rectangle = {  upperLeft:{x:3,y:4},  lowerRight: {x:4,y:4}};

函数定义表达式:

var square = function(x) {return x*x;}

属性访问表达式:

expresstion.identifierexpresstion[expresstion]example:var o  = {x:1,y:{z:3}};var a = [o,4,[5,6]];o.x // 1o.y.z // 3o["x"] // 1a[1] // 4a[2]["1"] // 6 a[2][1]也对a[0].x // 1

调用表达式:

f(0) // f是一个函数Math.max(x,y,z)a.sort()  

对象创建表达式:

new Object(0)new Point(2,3)不需要参数的时候可以这么写:new Objectnew Date

运算符概述:
delete 相当于(不完全是),将值赋值为undefined

运算优先级:

属性访问表达式和调用表达式的优先级要比运算符都高。接下来typeof最高优先级的运算符

算术表达式:

in 运算符:var point= {x:1,y:3}; "x" in point // true"toString" in point // true 对象继承了toString()方法var data = [1,2,3];"0" in data // true 数组中包含元素“0”1 in data // true 数字转换为字符串3 in data // fales 没有索引为三的元素

instanceof

注意

a op= b // 只运算一次a = a op b // a 运算两次

表达式计算:

eval("3+2");  // 5eval() 只有一个参数,不是字符串的时候直接返回参数,是,就计算。eval() 使用调用了它的变量作用域环境。在变量环境中定义了x,则eval(“x”)返回x的值,改变也会改变这个值。可以这样声明一个局部函数:eval ("function f(){ return x+1;}") 

全局eval()

在ECMAScript5中规定,var geval = eval;   // 使用别名,便是全局eval()var x = "global", y = "global";  // 全局变量function f() { var x = "local"; eval("x+='changed';"); //局部 return x;}function g(){ var y = "local"; geval("y +='changed';"); //全局 return y;}console.log(f(),x);console.log(g(),y);
阅读全文
0 0