JavaScript笔记-1

字面量、常量、变量、数据类型

变量和常量

  • 变量时一个具名的值,变量的值可变。
    • 关键字letvar
    • 声明变量可以不指定初始值,此时变量会是默认值:undefined
    • 可同时声明多个变量
    let currentTempC ;  //ES6 声明变量,不初始化值
    var currentTempC = 5 ;  //ES5 声明变量,初始化值为数字5

    // 同时声明多个变量
    let targetTempC, 
        room1 = "conference_room_a",
        room2 = "lobby";
  • 常量一旦初始化就不能改变
    • 关键字const
    • 惯例:凡是代表明确数字、字符串的常量名大写,并用下划线分割多个单词

变量、常量选择

  • 优先使用常量
    • 防止修改不应该更改带的值
    • 实际使用多侧重给数据命名区分,少数是为了修改数据值
  • 随着时间变化的值必须使用变量
  • for循环必须使用变量

标识符命名

  • 必须字母、$、下划线开头
  • 必须字母、数字、$、下划线组成
  • 可以使用Unicode字符
  • 不可以使用保留字

习惯规范

  • 标识符不应该大写字母开头,类名除外
  • 下划线开始的标识符代表特殊变量或内部变量。所以普通变量避免使用下划线开头。
  • $开始的标识符一般指jQuery-wrapped对象

字面量

字面量是一种创建值得方式
  • 能够使用标识符得地方,都可以使用字面量。
  • 多处使用同一字面量时,应该使用常量或变量代替,方便统一修改,可读性。

基本类型和对象

JavaScript中只有个这两种值
  • 基本类型,基本类型得值不可变(区别变量内容不可变)
    • 数字
    • 字符串
    • 布尔
    • null
    • undefined
    • 符号
  • 对象
    • 内置对象
      • Array
      • Date
      • Map和WeakMap
      • Set和WeakSet

数字

字符串

-表示
    * 单引号 ''
    * 双引号 ""
    * 重音符 `` ES6引入,为了启用模板字符串

转义

特殊字符

除了转义引号,反斜杠还能表示不可打印的字符

模板字符串(字符串插值)

ES6新的字符串连接机制
let a = 10.5 ;

//  ES5字符串连接
const message1 = "The number is " + a;  //"The number is 10.5"

// ES6字符串连接
const message2 = `The number is ${a}`;  //"The number is 10.5"

// 花括号内部可以使用任意表达式
const message3 = `THe number is ${a/2}`;    //"The number is 5.25"

多行字符串

let arr = new Array ;
        // 单双引号换行需要使用转义,会包含line2前面的缩进
        alert(
            arr[0] = "line1\n\
            line2"
        )
        //重音符不需要,也会包含lin2前面的缩进
        alert(
            arr[1] = `line1
        line2`
        )
        //不管使用'、"、` 这样都会包含缩进空格
        alert(
            arr[2] = 'line1\n\
                line2\n\
            line3'
        )
        //不想包含缩进空格写法 ``,'', ""都一样
        alert(
            arr[3] = `line1\n` +
                    `line2\n` + 
                `line3` 
        )

数字用作字符串

当需要数字时,字符串会转换为数字
当需要字符串时,数字会转换为字符串

布尔型

符号(ES6)

代表唯一的标志,独一无二,不会匹配其他任何符号
需要唯一的标识符避免跟其他标识符混淆,使用符号
 const RED = Symbol() ;
        //可传入一些描述信息
        const BLUE = Symbol("adf") ;
        // 每个符号都是唯一
        alert(RED===BLUE) ;//flase

null、undefined

  • null
    给开发者表示未赋值内容
  • undefined
    只有在有意模仿变量未赋值时才会使用

对象

本质上对象是一个容器,容器得内容可以改变(同一对象可以拥有不同的内容)
  • 对象命名,需取表意的名字
  • 对象的内容称作属性
    • 属性由 组成
      • 必须是字符串或符号
      • 可以是任意值
    • 访问属性
      • 成员访问运算符 .
        • 使用条件:属性名必须是一个合法的标识符,成员访问运算符始终作用于字符串
      • 计算机成员访问符 []
        • 对合法的标识符也起作用
        • 也可以访问符号属符,但必须使用计算机成员访问符
let obj = new Object ;
const SIZE = Symbol() ;

//添加color属性
obj.color = "yellow" ;
//添加SIZE符号属性
obj[SIZE] = 998 ;
//添加SIZE属性,有别于上一条
obj.SIZE = 0 ;

console.log(obj.SIZE) ; //0
console.log(obj[SIZE]) ; //998
  • 删除对象属性
delete obj.color ; //obj得color属性被删除。

Number, String, Boolean对象

这些对象两种用途

  1. 存储特殊值,例如:Number.INFINITY

  2. 以函数形式提供某些功能,例如.toUpperCase()

    const s = "hello";
    s.toUpperCase() ;        //"HELLO"
    

PS:下面是流程图,不支持

graph TB

id1((创建常量 s))-->初始化为基本的字符串类型
初始化为基本的字符串类型-->创建临时String对象
创建临时String对象-->调用对象的toUpperCase函数
调用对象的toUpperCase函数-->id2(删除临时对象)
 

数组

  • 长度不固定,可随时添加删除

  • 类型多样,每个元素又可以时任意类型

  • 下标从0开始

拖尾逗号

//arr第三个元素后的逗号,即是拖尾逗号
const arr = [
  "a",
  "b",
  "c",
]
  1. 早期版本浏览器,拖尾逗号会产生错误

  2. JSON不允许存在拖尾逗号

    所以尽量避免这种写法

日期

//创建当前日期对象
const now = new Date() ;

//创建指定日期对象1992年12月24日
const time1 = new Date(1992, 12, 24) ;

//创建指定日期和时间的对象1992年12月24日21点30分
const time2 = new Date(1992, 12, 24, 21, 30)

正则表达式

映射和集合

  • ES6引入Map和Set,及他们"弱"引用类型WeakMap和WeakSet
  • 集合类似数组,但是不允许重复元素

数据类型转换

转换成数字

  1. 使用Number对象的构造方法

    const numStr = "3.3" ;
    const num = Number(numStr) ; //不是Number对象的实例
    
  2. 使用内置函数parseIntparseFloat,可以指定基数

  3. 布尔值转换为数字

    const a = true ;
    const b = a?1:0 ;
    
  4. 日期使用valueOf()方法得到的是1970年1月1日0点到当前时间毫秒数

转换成字符串

任何对象都有toString()方法,除了用在数字数组上,其他使用上都不是很实用

转换成布尔类型

  1. 使用两次"not"操作符!

  2. Boolean对象构造方法没有new关键字

    const n = 0 ;
    const bool1 = !!n ;
    const bool2 = Boolean(n);
    

你可能感兴趣的:(JavaScript笔记-1)