NodeJS 基础语法

一、NodeJS 基础语法

1.1 安装

  • 下载镜像地址:

    • 阿里云镜像地址: https://npmmirror.com/
    • 开发文档MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
  • 开发工具

1.2 注释

  • 单行注释://
  • 多行注释:/*comment*/
str = 'hello' + /*comment*/ ' world'
console.log(str)

1.3 常量和变量

  • 变量声明
    • var a = 100: 声明一个全局或者函数内局部变量
    • let b = 200: 声明一个局部变量
  • 常量声明
    • const c=300: 常量必须声明的时候赋值,否则会报错,不可修改

变量声明完成以后没有赋值,会赋值为undefined

var a 
console.log(a) // undefined

a = 100
console.log(a) // 100

const b 
console.log(b) // SyntaxError: Missing initializer in const declaration

1.4 数据类型

ES是动态语言,若类型语言,虽然先声明了变量,但是变量可以重置赋值成任意类型。若类型,不需要强制类型转换,会隐式类型转换

  • 隐式类型转换

    • 字符串+其他类型=字符串:
    • 数字+其他类型(除undefined)= 数字
    • undefined + 其他类型(除字符串) = Nan
    • 逻辑运算,返回类型为短路是的类型
    console.log(a = undefined + 'a', typeof(a)) // undefineda string
    console.log(a = null + 8, typeof(a)) // 8 number
    console.log(a = 8 + true, typeof(a)) // 8 number
    console.log(a = undefined + 8, typeof(a)) // NaN number
    console.log(a = null + true, typeof(a)) // 1 number
    console.log(a = undefined + true, typeof(a)) // NaN number
    console.log(a = true && 8, typeof(a)) // 8 number
    console.log(a = true && 'a', typeof(a)) // a string
    

NaN: Not a Number, 转换数字失败

1.5 字符串

使用单引号'或者双引号"引用起来的值就是字符串,ES6支持反引号.通常多行定义使用反引号,且反引号支持插值

a = `line1
    line2
line3`
console.log(a)
输出:
line1
    line2
line3
for (let i=1;i<10;i++) {
    line = ''
    for (let j=1;j<=i;j++) {
        line += `${j}*${i}=${i*j} `
    }
    console.log(line)
}
输出:
1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

1.6 转义字符

image-20230719230057206

1.7 数值

image-20230719230347762

1.8 运算符

  • 算术运算符

  • 单目运算符: i=0;let a = ++i+i+++i+++i 结果为 1+1+2+3=7

    • ++
    • --
  • 比较运算符

    • = =: 宽松相等,进行类型转换
    • = = =:严格相等,不进行类型转换
  • 逻辑运算符

    • &&
    • ||
    • !
  • 位运算符

    • &
    • |
    • ^
    • <<
    • >>
  • 三元运算符 条件表达式?真值:假值

    • ('3'> 30)?'yes':'no'
  • 逗号运算符

  • 其他运算符

    • instanceof: 判断是否属于指定类型,必须明确类型,对象必须是new关键字声明创建的

      console.log('a' instanceof String) // false
      console.log(1 instanceof Number) //false
      
       a = new String('a')
       console.log(a instanceof String) // true
       b = new Number(1)
       console.log(b instanceof Number) // true
      
    • typeof: 返回类型字符串

    • delete: 删除对象或者对象的属性

    • in: 指定的属性是否在对象内,返回bool值

    
    let s = new Array('a', 'b', 'c')
    
    console.log('a' in s) // false
    console.log(0 in s)  // true
    console.log(s[0]) // a
    console.log("length" in s) // true
    
    for (let i=0;i<s.length;i++) {
        console.log(s[i]) 
    }
    // a
    // b
    // c
    delete s[1]
    
    for (let i=0;i<s.length;i++) {
        console.log(s[i]) 
    }
    // a
    // undefined
    // c
    

    1.9 生成器表达式

    ES6开始支持生成器函数,每次调用next()方法返回一个对象,这个对象包含两个属性value, done。

    function *inc() {
        let i = 0;
        let j = 5;
        while(true) {
            yield ++i;
            if(!--j) return 100
        }
    }
    
    let gen = inc()
    for (let i=0;i<7;i++) {
        console.log(a = gen.next(), a.value)
    }
    // { value: 1, done: false } 1
    // { value: 2, done: false } 2
    // { value: 3, done: false } 3
    // { value: 4, done: false } 4
    // { value: 5, done: false } 5
    // { value: 100, done: true } 100
    // { value: undefined, done: true } undefined
    

posted on 2023-07-20 15:12  kntvops  阅读(450)  评论(0编辑  收藏  举报

导航