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

原始表达式:

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

ture
false
null
this

i
sum
undefined

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

数组:[],[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.identifier
expresstion[expresstion]

example:
var o  = {x:1,y:{z:3}};
var a = [o,4,[5,6]];

o.x // 1
o.y.z // 3
o["x"] // 1
a[1] // 4
a[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 Object
new 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");  // 5

eval() 只有一个参数,不是字符串的时候直接返回参数,是,就计算。
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值