JS 学习(一)

快速入门

数据类型和变量

数据类型

  • Number
    • js 不区分整型和浮点数,统一用 Number 表示。NaN:非数值。Infinity:无限大。
  • 字符串
    • ” 与 “” 包裹的字符串没有区别
  • 布尔值
    • && 与 ,|| 或 ,! 非
    • == 会自动转换数据类型进行比较,=== 不会自动转换类型,建议使用 ===
    • NaN 与任何值都不相等,只能通过 isNaN() 函数进行判断
  • null 和 undefined
    • null 是一个空值。js 区分大小写 NULL 值为 undefined
    • undefined 表示值未定义
  • 数组
  • 对象

变量

  • var 声明一个变量,其作用域是声明的函数体。
  • 声明变量可以不使用 var 关键字,未用 var 声明的变量是全局变量,同一个页面的不同 js 文件中声明的全局变量会相互影响,建议都使用 var 进行声明。
  • 在 js 文件头部添加 ‘use strict’ ,将启用严格模式解析 js ,未用 var 声明的变量会报错。

字符串

字符串及转义

  • 单引号:双引号中可正常包裹单引号,双引号中包裹双引号可以通过 \ 进行转义。
  • ASCII 码:\x41 表示 A\x 转义 ASCII 码。
  • unicode 字符:\u4e2d\u6587 表示 中文\u 转义中文。

多行字符串

  • 使用反引号包裹var str5 = `Hello,
    This is KangKang.
    How are you?`;

模板字符串

  • 使用反引号包裹,${var} 包裹变量名`Hello, This is ${name}. I’m ${age} years old.`;

操作字符串

  • toLowerCase()
  • toUpperCase()
  • indexOf(), 字符或子串在字符串中的开始位置
  • substring(start[, end]), 包括开始位置不包括结束位置,仅有一个参数表示截取到字符串末尾
  • split(separator)

数组

为数组的长度赋值,将改变数组的大小。为超过数组长度的索引赋值,将改变数组的大小。为了不改变数组的大小,请不要为数组长度赋值和为超过数组长度的索引赋值。

数组操作

  • indexOf(var)
  • slice(start[, end]), 与字符串的 substring() 方法一样, 包括 start 不包括 end, 没有修改原数组, 可以使用 slice(0) 来复制一个数组
  • push(…items), 在数组末尾推入若干元素
  • pop(), 在数组末尾弹出一个元素
  • unshift(…items), 在数组开头插入若干元素
  • shift(), 在数组开头弹出一个元素
  • sort(), 按默认方式排序, 修改了原数组
  • reverse(), 反转,修改了原数组
  • splice(start, delete count, insert items), 万能方法,在指定位置删除指定个数的元素再插入若干元素
  • concat(arr),合并数组,没有修改原数组
  • join(separator),利用 separator 连接数组

对象

对象用{} 包裹赋值给一个变量,可以通过 obj.prop 的方式获取对象的属性,但是如果对象的属性包含特殊字符,就需要这样获取属性obj['prop']

判断属性是否属于对象

  • ‘prop’ in obj, 如果对象的属性是继承而来也会返回 true。主要属性需要用 '' 包裹。
  • obj.hasOwnProperty(‘prop’)。

条件判断

if () { … } else { … }

if () { … } else if () { … } else { … }

JavaScript 把 null undifined 0 NaN '' 视为 false ,其他值一概视为 true

循环

for for…in while do…while

for (var in arr|obj) { … },其中 var 是字符串,当遍历数组的时候 var 为字符串型的下标

Map 与 Set

map 与 set 是 ES6 新增的数据结构

map

  • 初始化 Map 可以使用二维数组:var map = new Map([[‘xiaoming’, 18], [‘xiaocai’, 20], [‘xiaohong’, 19]]),也可以声明一个空 Map
  • map.set(key, value)
  • map.delete(key)
  • map.get(key)

set: 集合,集合中的元素没有重复

  • var set = new Set([3, 3, ‘3’])
  • set.add(key)
  • set.has(key)

iterable

ES6 引入了 iterable 类型。iterable 类型的集合,可以通过 for … of 遍历,Array Map Set 都是 iterable 类型

  • for (var i of iterable) { … }, 其中变量 i 是 iterable 类型数据的值,不再是下标或者键。
  • forEach(function (value, index, iterable) { … }), 对于 Map ,index 为 key,对于 Set,index 也为 value
    • ES5.1 引入