《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
<a href = "javascript:void window.open()";>打开新窗口</a>
(5) 逗号运算符 二元运算符
,
i = 0, j = 1, k = 2;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,009评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,808评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,891评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,283评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,285评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,409评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,809评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,487评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,680评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,499评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,548评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,268评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,815评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,872评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,102评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,683评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,253评论 2 341

推荐阅读更多精彩内容