JavaScript笔记-2

2019-03-21  本文已影响0人  蚂蚁踩死我

[TOC]

控制流

控制流的底层

start=>start: 开始
cond1=>condition: 判断
sub1=>subroutine: 子程序
op1=>operation: 程序
end=>end: 结束

start->cond1
cond1(yes)->op1->end
cond1(no)->sub1(top)->cond1

while循环

块语句

空格

辅助方法

if else语句

do…while循环

for循环

if语句

控制流异常

switch语句

for…in循环

是为了那些循环对象中有一个属性key而设计的

for(变量 in 对象){
    语句
}
const player = {name: 'Thomas',
                rank: 'Midshipman',
                age: 25} ;
for(let prop in player){
        if(!player.hasOwnProperty(prop)) continue ;
    console.log(prop + ':' + player[prop]) ;
}

for..of循环(ES6)

另一种在集合中遍历元素的方法

for(变量 of 对象)
  语句
const arr = [ 'a', 'b', 'c'] ;
        for(let it of arr){
            alert(`arr的元素有${it}`) ;
        }

实用的控制流模式

使用continue减少条件嵌套

//典型的嵌套控制流
//num 是 randomNum()产生的随机数
while(num > 1 && num < 100){
  if(num === 7){
        alert('lucky you') ;
  }
  else{
        num = randomNum() ;
  }
}

//使用contionue使结构更加「扁平」
while(num > 1 && num < 100){
  if(num === 7){
        alert('lucky you') ;
        continue ;
  }
  num = randomNum() ;
}

使用break或return 避免不必要的计算

循环结束后使用索引的值

循环一个列表同时还在修改它,常用做法使用索引递减的循环方式

表达式和运算符

运算符

算数运算符

JavaScript中所有的数字都是双精度的,所以算数运算可能返回小数

运算符优先级

比较运算符

比较数字

字符串连接+

JavaScript会根据运算对象的类型来决定执行加法 还是字符串连接

逻辑运算符

与或非

短路求值

const bool1 = true ;
let a = 0 ;
//或运算,第一个为真,短路,之后的a++不执行。
const result1 = bool1 || a++ ;

const bool2 = false ;
let b = 0 ;
//且运算,第一个为假,短路,之后的b++都不执行
const result2 = bool2 && b++ ;

非布尔值的逻辑运算

条件运算符(三元运算符)

const bool = false ;

const message = bool ? "有消息了" : "没有消息" ;
//等价于使用if...else
if(bool){
    const message = "有消息了" ;
}
else{
    const message = "没有消息" ;
}

逗号运算符

分组运算符()

位运算符

类型判断运算符typeof

表达式 返回值 备注
typeof null "object"
typeof Symbol() "symbol" ES6
... ... ...

void运算符

计算操作数并返回undefined,没什么用,唯一的用途是作为HTML标签<a>的URI

<a href="javascript: void 0">lol</a>

赋值运算符

解构赋值(ES6)

允许将对象或数组分解成多个单独的值

对象和数组运算符

运算符 描述
. 成员访问
[] 计算机成员访问
in 判断属性是否存在
new 实例化对象
instanceof 原型链测试
... 展开运算符
delete 删除运算符

模板字符串中的表达式

表达式和控制流模式

if(bool){
  message = '有' ;
}
else{
  message = '无' ;
}

//转化成表达式
message = bool ? '有' : '无' ;
if(!options) options = {} ;

//转化
options = options || {} ;
上一篇下一篇

猜你喜欢

热点阅读