《JavaScript权威指南》笔记二

表达式和运算符

原始表达式

直接量(1.23 hello )、保留字(true false null this)、变量(undefined,i sum)
对象和数组的初始表达式
实际上是新创建的对象和数组,所说的 对象直接量、数组直接量
(1)数组表达式

    [] //一个空数组  
    [1+2,3+4] //通过逗号分隔的表达式的值

(2) 对象表达式

    var  p :{ x:2.3,y:-1.2};
    var q = {};
    q.x = 2.3; q.y = -1.2;

(3) 函数定义表达式(函数直接量)

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

属性访问表达式

var book = {
   topic:"javascript",
   fat:"true"
}

通过 . 或者 [] 来访问对象属性

book.topic ==> javascript

如果命名的属性不存在,那么整个属性访问表达式的值就是undefiend

调用表达式

f(0) // f 是一个函数表达式,0 是一个参数表达式
Math.max(x,y,x) Math.max 是一个函数;x,y,z是参数
a.sort() //是一个函数,它没有参数

对象创建表达式
创建一个对象并调用一个函数===》构造函数 初始化新对象的属性。
new Object()
new Point(2,3)
当计算一个对象创建表达式的值时,首先创建一个新的空对象,然后通过传入指定的参数并将这个新对象当做this来调用一个指定函数。可以用this初始化这个新创建对象的属性。

运算符

算术表达式

+
‘1’+‘2’ // 12
1+{}  // 1[object,object]
true + true  // 2

2 + null  // 2  null 转换0
2 + undefinend // NaN 

1+1 +'hello'   // 2hello

++

var i = 1   j = ++i    //  j    i   都是 2
var j = 2  j = i++    // i 为2  j  为 1

位运算符

& | ^ !

关系表达式

(1)相等和不等运算符
=== 严格相等运算符 检查两个操作数是否严格相等
== 相等运算符 检查两个操作数是否相等
严格相等运算符
首先计算其操作数的值,然后比较两个值,比较过程没有任何类型转换。
不相等/不严格相等
!=
!==
(2)比较运算符
< > >= <=
(3) in 和 instanceof运算符
in 左操作数是一个字符串(可以转换字符串)右操作数是一个对象

var point = {x:1,y:2}
'x' in point    //true
'z' in point   // false
'toString()'   in point //true  对象继承了toString()方法

instanceof
左操作数是一个对象 右操作数标识对象的类。

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

逻辑表达式

&& || !进行布尔算术运算

赋值表达式

i = 0 将变量i 设置为0
o.x = 1 将对象o属性x设置 为1

= 给变量或者属性赋值
左操作数是一个左值 (变量、对象属性)
右操作数可以是任意类型的任意值。

赋值操作符的结合性是从右至左

i = j = k = 0; //把三个变量初始化0

表达式计算

eval()
eval本是个函数,但常被当做运算符来对待
直接eval:在调用它的上下文作用域内执行

间接eval(起别名):使用全局对象作为其上下文作用域

其他运算符

(1)条件运算符(?:)
三元操作符
第一个操作数在?之前 第二个在?:中间 第三个在:之后

x > 0 ? x : -x 求x绝对值
(2) typeof 运算符
typeof null //object
(3) delete 删除对象属性或者数组元素
副作用:用来删除操作,不是用来返回一个值的

var a = [1,2,3]
delete a[2]
2 in a   //false
a.length  //3  给删除元素设置一个undefiend的值

删除数组元素,不改变数组长度(相当于是打了个洞)
不能删var声明的变量,不能删function定义的函数和函数参数
关于对象:只能删除自有属性,不能删除继承属性

(4)void运算符 一元运算符
不经常使用,操作数可以是任意类型,但忽略计算结果并返回undefiend
常用在客户端url
打开新窗口
(5) 逗号运算符 二元运算符
,
i = 0, j = 1, k = 2;

你可能感兴趣的:(《JavaScript权威指南》笔记二)