js基础回顾 | 青训营笔记

69 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第6天

变量

声明一个变量时,关键字var其实不是必须的,但最好再每次声明新变量时都加上

js不是强类型语言

null表示变量没有值

unidefined表示变量已被声明但未被赋值

变量作用域 本地变量和全局变量 应该尽量避免使用全局变量

真值、假值

undefined、null、+0、-0、NaN、‘’(长度为0的空字符串)都是false

其余均为true,尤其对象始终为true

相等操作符(==和==)

== 不同类型的值也会看做相等:

  • null == unidefined // true

  • 数字 == 字符串 // 数字 == toNumber(字符串)

  • 布尔值 == 任何类型 // toNumber(布尔值)==任何类型

  • 字符串或数字 == 对象 // 字符串或数字 == toPrimitive(对象)

  • 如果x和y是相同类型,js会比较它们的值或对象的值,其他没有列入这个表的情况都返回false

toNumber()和toPrimitive()方法是js内部的,外部不可以直接调用

toNumber返回结果

undefined //NaN

null //+0

布尔值(true 1 false +0)

数字 //数字对应的值

字符串 //将字符串解析成数字,如果字符串中包含字母,返回NaN;如果由数字字符组成,转换成数字

对象 //Number(toPrimitive(value))

toPrimitive()的返回结果

对象 //如果对象的valueOf方法的结果是原始值,就返回原始值,如果对象的toString()方法返回的是原始值,就返回这个值,其他情况都返回一个错误

===操作符

  • 如果两个值的类型不同,比较的结果就是false,

  • 若类型相同,

    数字 x,y数值相同且不是NaN //true

    字符串 x,y是相同的字符 //true

    布尔值 同为true或false //true

    x,y引用同一个对象 //true

    js中的对象就是普通键值对的集合

es6

  • let 使得js中的变量作用域 ,变的和java、c的一样了

  • const 定义的只读变量不可以被重新赋值

  • 模板字面量变量a的值为:${变量a},也可以用于多行字符串不需要/n,只需要按enter即可

  • 箭头函数

    let getSum = (a,b) => {

      return a+b
    

    }

或只有一条语句的函数可以更简单 let getSum = (a,b) => a+b

函数的参数可以有默认值eg:

function sum(x = 1,y = 2,z = 3){

    return x+y+z

}
  • 声明展开和剩余参数

代替es5中的apply()把数组转化为参数,es6有了展开操作符(...)eg:

a = [1,2,3]

sum(...A)

也可以当作剩余参数

function sum(1,2,...a){}
  • 增强的对象属性

数组解构 赋值,变量互换

对象结构 属性简写 obj = {x,y}

方法属性 对象声明看起来像属性的函数{print(){}}

js面向对象编程和java等的类似之处