number
十进制及科学计数法
二进制(0b11)
八进制(011,ES5 添加了 0oxx 语法)
十六进制(0x11)
string
空字符串:''
,长度为0
空格字符串:' '
, 长度为1
表示单引号 var a = ' \' '
(\
为转义符)
表示转义符var b = ' \\ '
, 长度为1
boolean(布尔)
值为ture/false
&&
与运算,||
或运算
symbol
不常用,可参考方方的https://zhuanlan.zhihu.com/p/22652486
null和undefined
1.变量没有赋值==>undefined
2.有一个对象object,现在不想赋值,==>null(推荐)
3.有一个非对象,不想赋值==>undefined
以上六种为基本类型(简单类型)
object
object为复杂类型,复杂类型是由简单类型组成的
对于var a = {'key1' = 'value1', 'key2' = 'value2'}
, key可以为空字符串,a['key']
中的引号一般不能省略;key按照标识符规则书写时,引号可以省略。并且a['key']
可以改写成a.key
删除key:delete a['key']
, 删除后该key为undefined
几个BUG
1.typeof null //'object'
2.typeof function // 'function'
几个问题
- JavaScript引擎不能自动识别编号大于0xFFFF的Unicode字符
JS允许在程序中使用Unicode编号表示字符,写成\uxxxx的形式
'\u00A9' 表示 "©"
var f\u006F\u006F 是合法的
"𝌆".length 为 2 但 "𝌆" 是单个字符 - 全局函数 btoa() 能将字符串转为Base64编码
全局函数 atob() 能将 Base64编码转为原来的编码
要将非ASCII码字符转为Base64编码,必须中间插入一个转码环节 - 对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合
var o1 = {}; 可以创建一个对象
var o2 = new Object(); 可以创建一个对象
var o3 = Object.create(Object.prototype); 可以创建一个对象 - 想知道变量 a 是否已经声明过(值为 undefined 不代表没有声明过),应该用
if ('a' in window) { ... }
想知道一个对象有哪些 key,应该APIObject.keys(obj)
- for…in 循环
for...in 循环用来遍历对象
for...in 循环会跳过不可遍历的 key
for…in 循环不仅遍历对象自身的属性,还遍历继承的属性
网友评论