第四章 表达式和运算符

1、最简单的表达式是原始表达式,是表达式的最小单位——它们不再包含其他表达式。JS中原始表达式包含常量或直接量、关键字和变量。

2、一个对象的属性名不是固定值时,必须使用方括号写法来访问属性。

3、任何一个调用表达式都包含一对圆括号和左圆括号之前的表达式,如果这个表达式是一个属性访问表达式,那么这个调用称作方法调用。

4、运算符的副作用:有一些表达式具有副作用,前后的表达式运算会相互影响,比如赋值运算符、++、--、delete运算符。

5、属性访问表达式和调用表达式的优先级要比所有运算符要高。赋值运算符的优先级非常低,通常最后执行。

6、先计算子表达式的值,再根据运算符的优先级和结合性运算。假设存在a=1,那么b=(a++)+a的计算顺序为:1)计算b,2)计算a++,假设为c,3)计算a,4)计算c+a,5)将c+a的结果赋给b。按照a++的定义,第2步中的结果仍然为1,即c=1,随后a立刻自增1变为2,所以在第3步中,a=2,最终b=1+2=3.

7、位运算符要求它的操作数是整数。按位非相当于改变一个数的符号并减去1:~5=-6.

8、位运算符将NaN/Infinity/-Infinity都转换为0.

9、<<左移,将一个数左移1位相当于它乘以2,>>带符号右移,相当于除以2(忽略余数).>>>无符号右移,左边的高位总是填补0.

10、+号运算符更偏爱字符串,如果其中一个操作数是字符串的话,则进行字符串连接操作;而比较操作符更偏爱数字,只有在两个操作数都是字符串的时候,才会进行字符串的比较。

11、in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象。如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true。注意在数组中,var data=[7,8,9],7 in data返回false,因为7代表索引为7,非数组中是否有7这个值。

12、逻辑与&&操作符。首先计算左侧的值,如果左侧计算结果是假,这时&&简单的返回左操作数的值,不计算右操作数;如果左侧值计算结果为真,&&将计算右操作数的值并将其返回作为整个表达式的计算结果,常用于有条件的执行代码(满足左侧条件后执行右侧)。这种行为称为“短路”。逻辑或||具有类似特性,如果左侧值为真,那么返回这个值,如果左侧值为假,那么返回右侧的值,常用于给参数提供默认值

13、三元运算符?:  典型的应用场景——判断一个变量是否定义或拥有一个有意义的真值,如果有意义则使用它,如果无意义则使用一个默认值(类似||)。

14、typeof NaN 返回“number”。typeof null返回“object”。

js-权威指南学习笔记3的更多相关文章

  1. js权威指南---学习笔记02

    1.JS只有函数作用域,没有块级作用域这个概念: 它有一个特性——声明提前:在同一个函数中不同位置声明的变量,都被提前在函数开始的时候,执行声明操作:在原先位置执行赋值操作: 2.声明的全局变量,相当 ...

  2. js权威指南学习笔记(一)类型、值和变量

    1.数据类型:原始类型(primitive type) 和对象类型(object type) 原始类型包括数字.字符串和布尔值: 除数字.字符串.布尔值.null(空).undefined(未定义), ...

  3. js权威指南---学习笔记01

    1.当函数赋值给对象的属性时,就变为了方法:2.被零整除不报错,只会返回无穷大(Infinity)或者负无穷大.例外:零除以零等于非数字(NaN).3.NaN与任何值都不相等! 4.Javascrip ...

  4. js权威指南学习笔记(四)对象

    1.创建对象 (1).通过对象直接量的方式创建 说明:对象直接量是由若干名/值对组成的映射表,名/值对中间用冒号分隔,名/值对之间用逗号分隔,整个映射表用花括号括起来. 如:       5 5   ...

  5. js权威指南学习笔记(三)语句

    1.声明语句 如果用var声明的变量没有初始化,那么这个变量的值会被初始化为undefined. 函数声明语句的语法如下:       4 4           1 console.log(func ...

  6. js权威指南学习笔记(二)表达式与运算符

    1.数组初始化表达式 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充undefined.如:       2 2           1 var arr = [1,,,,,6]; 2 ...

  7. JavaScript 权威指南-学习笔记(一)

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! ## JavaScript 权威指南-学 ...

  8. 《JS权威指南学习总结》

    JS权威指南学习总结:http://www.cnblogs.com/ahthw/category/652668.html

  9. 《JS权威指南学习总结--开始简介》

    本书共分成了四大部分: 1.JS语言核心 2.客户端JS 3.JS核心参考 4.客户端JS核心参考 其中 <JS权威指南学习总结--1.1语法核心> 是:第一部分JS语言核心 各章节重点 ...

  10. HTTP权威指南-学习笔记

    目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...

随机推荐

  1. 转载:不定义JQuery插件,不要说会JQuery

    转载:http://www.cnblogs.com/xcj26/p/3345556.html 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#") ...

  2. AQS源码泛读,梳理设计流程(jdk8)

    一.AQS介绍 AQS(AbstractQueuedSynchronizer)抽象队列同步器,属于多线程编程的基本工具:JDK对其定义得很详细,并提供了多种常用的工具类(重入锁,读写锁,信号量,Cyc ...

  3. P1494 小Z的袜子

    P1494 小Z的袜子 莫队板子题,对询问进行排序+分块,从而得到巧妙的复杂度 对于L,R的询问. 设其中颜色为x,y,z的袜子的个数为a,b,c... 那么答案即为 (a*(a-1)/2+b*(b- ...

  4. "|",“.”,"include"在jade中的用法(原样输出)

    我们知道, body --><body> abc --><abc></abc> --></body> 如果我们想直接输入内容怎么办呢: ...

  5. ubuntu 下更新pip后发生 ImportError: cannot import name 'main'的问题解决

    今天刚使用ubuntu 由于安装的是pip 8的版本,我感觉pip版本有些低就随手将将pip更新了,刚新到pip 10版本的,没想到刚更新完就报错了, 发生 ImportError: cannot i ...

  6. 使用Jacob操作Wrod文档的工具类代码

    一.需要有jacob的jar包支持 import java.util.Iterator; import java.util.List; import java.util.HashMap; import ...

  7. python实现二叉树的建立以及遍历(递归前序、中序、后序遍历,队栈前序、中序、后序、层次遍历)

    #-*- coding:utf-8 -*- class Node: def __init__(self,data): self.data=data self.lchild=None self.rchi ...

  8. java_sql_Batch_批处理

    java  JDBC 进行sql语句的批处理的两种方法示例代码.表是oracle数据库里的dept表,为了看清逻辑关系,把异常都throws 出去. package com.ayang.jdbc; i ...

  9. attachEvent和addEventListener区别总结

    1.attachEvent与addEventListener的区别 支持的浏览器不同.attachEvent在IE9以下的版本中受到支持.其它的都支持addEventListener. 参数不同.ad ...

  10. win10下用Linux搭建python&nodejs开发环境

    Win10下用自带Linux系统搭建开发环境 Win10下用自带Linux系统搭建开发环境启用Linux老版本(win10 1709之前):新版本(win10 1709之后)卸载linux老版本新版本 ...