Node.js语法

语句块
JS使用大括号构成语句块
ES6之前语句块是没有作用域的,从ES6开始支持块作用域,let只能在块作用域内可见

function hello(){
    let a=1 //只能在函数内用
    var b=2 //只能在函数中用
    c=3 //全局定义
}
if (1){
    let d=4 //定义较严格,只能在块内使用
    var e=5 
    f=6
    if (true){
        console.log(d)
        console.log(e)
        console.log(f)
        console.log('-'.repeat(30))
        g=10
        var h=11
    }
}
hello()

console.log(a) //不可见
console.log(b) //不可见
console.log(c) //可见
console.log(d) //不可见
console.log(e) //可见
console.log(f) //可见
console.log(g) //可见
console.log(h) //可见

流程控制

条件分支

if (cond1){
}
else if (cond2){
}
else if (cond3){
}
else{
}

条件的False等效
false
undefined
null
0
NaN
空字符串
其它值都将被视为True
swith……case分支语句

switch (expression) {
case label_1:
		statements
		[break;]
case label_2:
 		statements
 		[break]
……
default:
		statements_def
		[break]
}

这里最大的问题,就是穿透问题,一定要在case中恰当的使用break语句,否则就会继续顺序向下执行

let x=5
switch (x){
    case 0:
        console.log('zero')
        break
    case 1:
        console.log('one')    
    case 2:
        console.log('two')
    case 3:
        console.log('three')
        break
    case 5:
    case 4:
        console.log('four')
    default:
        console.log('other')    
}

在这里插入图片描述
for 循环

// c风格for 循环
for ([initialExpression];[condition];[incrementExpression])
{
		statement
 }
for (let i=0;i<10;i++){
    console.log(i)
}
console.log('-'.repeat(30))
for (var x=0,y=9;x<10;x++,y--){
    console.log(x*y)
}
console.log('-'.repeat(30))
for (let i=0;i<10;i+=3){
    console.log(i)
}

在这里插入图片描述
while循环和do……while

while (condition)
		statement

条件满足,进入循环,条件为真,继续循环

do 
		statement
while (condition)

先进入循环,然后判断,为真就继续循环

let x=10
while (x--){
    console.log(x)
}
console.log('-'.repeat(30))
do{
    console.log(x)
}while(x++<10)

在这里插入图片描述
for ……in循环
对象操作语句for……in用来遍历对象的属性

for (variable in object) {
		statements
}
let arr=[10,20,30,40]
console.log(arr[1])

for (let x in arr){
    console.log(x)
}
console.log('-'.repeat(30))

for (let index in arr){
    console.log(`${index} ${arr[index]}`)
}
console.log('-'.repeat(30))
for (let i=0;i<arr.length;i++)
    console.log(arr[i])

let obj={
    a:1,
    b:'string',
    c:true
}

console.log(obj.a)
console.log(obj['b'])
console.log(obj.d)
console.log('-'.repeat(30))
for (let x in obj){
    console.log(x)
}
for (let k in obj){
    console.log(`${k} ${obj[k]}`)
}

在这里插入图片描述
for in 循环返回的是索引或者key,需要间接访问到值
数组返回的是索引
for……of 循环

let arr=[1,2,3,4]
let obj={
    a:1,
    b:'string',
    c:true
}
for (let i of arr){
    console.log(i)
}

for (let i of obj){
    console.log(i)
}

在这里插入图片描述
注意:for ……of 不能迭代一个普通对象
原因是,of后面必须是一个迭代器
break、continue
break结束当前循环
continue中断当前循环,直接进入xia一次循环
for迭代的差别

function sum(arr){
    for (let x in arr){
        //遍历index或对象属性
        console.log(x,typeof(x),arr[x])
    }
    for (let x of arr){
        console.log(x,typeof(x))
    }
    for (let x=0;x<arr.length;x++){
        console.log(x,typeof(x),arr[x])
    }
}
sum([3,6,9])

在这里插入图片描述

symbols类型

ES6提供Symbol类型,内建原生类型

let sym1=Symbol()
let sym2=Symbol('key1')
let sym3=Symbol('key1')
console.log(sym2==sym3) //false,symbol值的唯一的

在这里插入图片描述
1、作为对象的属性key

let s=Symbol()
let t='abc'
let a={
    [s]:'abc',
    t:'ttt',
    [t]:'000'
}
console.log(a)
console.log(a[s])
a[s]=2000
console.log(a[s])

在这里插入图片描述
2、构建常量
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值