第三章 基本概念

2017-08-27  本文已影响0人  庄海鑫

运算符优先级

借鉴班上一个同学的说法
袁(一元运算符)术(算术)移位(按位运算符),关系(关系运算符)位(位运算符)继(逻辑运算符)父(赋值运算符)

运算符优先级

代码加不加分号的问题

不加分号,解释器一般根据情况看你后面是否会给你自动加。
通用原则:看后面代码和当前代码能不能一起执行,能就合并,不能就分开执行,如果都不能执行,就报错。
下面是特殊情况

var a=1
var b=2
a
++
b

等价于

var a=1;
var b=2;
a;
++b;

Null和Undefined

null:表示"没有对象",即该处不应该有值。
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
(3)不能当作变量声明

Object.getPrototypeOf(Object.prototype)
// null

undefined :表示"缺少值",就是此处应该有一个值,但是还没有定义
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
(5)可以当作变量声明

var i;
i // undefined

function f(x){console.log(x)}
f() // undefined

var  o = new Object();
o.p // undefined

var x = f();
x // undefined

参考表

对照表

实际上,undefined值派生自null的,因此ECMA-262规定对它们的相等性测试要返回true


isNaN()

判断传入的值是否能转化为数字

Infinity=


数值转换

Number


一元加

将你想操作的数据类型转换为数字
对象需要先调用他们的valueOf()和toString()


逻辑与的延伸

  1. 进行布尔值运算 var result=true&&false;
    下面我们让两个操作数用表达式表示。
var a=1;
var b=2;
a==1&&b==3;  //false

  1. 总结如果并且 :如果 a...并且b....,那么... ,通常这语句我们用到if语句中。
    用于判断
var a=1;
var b=2;
a==1&&(b=3);  // 3

  1. 总结: 如果那么 :如果a等于1成立的话,继续运行后面的表达式,如果a不等于1,后面就没有必要执行,这称之为短路写法
    前面是判断语句,后面是执行语句

逻辑或的延伸

  1. 进行布尔值的运算 var result=false||true
var a=1;
var b=2;
a==2||b==2//true
  1. 总结或者 :a==2或者b==2,我们要进行什么样什么样的操作。
var a=1;
var b=2;
x=a||b   //true
  1. 总结: 如果不...那么用于赋值 这也是短路写法

将逻辑与和逻辑或合并

a&&b||c

其中 a、b、c为表达式 ,如果a执行b否则执行c,
a:为判断语句
b:为执行语句
c:为执行语句
a满足的时候执行b,a不满足的时候执行c
等价于三目运算符 a?b : c 优先级逻辑运算符大于条件运算符
上面通常用于简单的if else语句,三目运算符用于赋值。


上一篇下一篇

猜你喜欢

热点阅读