观阮一峰老师js教程笔记

1. js中并不是所有值都是对象
  • 基本数据类型不是对象,没有方法和属性
      方法:是某个特定对象才能调用的函数
      属性:是隶属于某个特定对象的变量
      对象:是一种字包含的数据类型
2. JavaScript与ECMAScript的关系
  • ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的。
2.1基本语法
  • 变量提升:就是所有的变量的声明语句,都会被提升到代码的头部
  • for循环和while循环相同
  • 三元运算符(条件) ? 表达式1 : 表达式2可视为if...else的简写
  • do...while循环不管条件是否为true至少执行一次
  • continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环
  • break用于直接跳出循环或代码块
2.2数据类型
  • typeof null返回object
  • if语句中undefinednull都会转为false
  • null是一个表示“空”的对象,转为数值时为0;
  • undefined是一个表示”此处无定义”的原始值,转为数值时为NaN。
  • 转换规则是除了下面六个值被转为false,其他值都视为true。
    undefined
    null
    false
    0
    NaN
    "或''(空字符串)
2.3数值
  • js中所有数字都是64位双精度浮点数
  1. 第1位:符号位,0表示正数,1表示负数
  2. 第2位到第12位(共11位):指数部分
  3. 第13位到第64位(共52位):小数部分(即有效数字)
  • 绝对值小于等于2的53次方的整数,即2-53到253,都可以精确表示。
  • 数值的进制

十进制:没有前导0的数值。
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
十六进制:有前缀0x或0X的数值。
二进制:有前缀0b或0B的数值。

  • parseInt方法用于将字符串转为整数。
  1. 如果parseInt的参数不是字符串,则会先转为字符串再转换。
  2. 字符串转为整数的时候,是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。
    3.如果以0x开头会照16进制解析
    4如果以0开头会以10进制解析
  3. parseInt方法还可以接受第二个参数(2到36之间),表示被解析的值的进制
  4. 如果第一个参数不是字符串,"0x11"写成0x11则会先转换为10进制,在进行第二个参数的转换
    -isNaN()
  • isNaN()可以用来判断一个值是否为NaN。
  • isNaN只对数值有效,如果传入其他值,会被先转成数值。相当于isNaN(Number('xxx'))
2.4字符串
  1. 字符串只能写在一行内,如果要分成多行,每一行末尾加上\和换行符
  2. 反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。
  3. 字符串可视为字符数组可以使用[]运算符返回某个位置的字符
    反斜杠\有3种特殊的用法:
  • \HHH
    反斜杠后面紧跟三个八进制数(000到377),代表一个字符。HHH对应该字符的 Unicode 码点,比如\251表示版权符号。显然,这种方法只能输出256种字符。
  • \xHH
    \x后面紧跟两个十六进制数(00到FF),代表一个字符。HH对应该字符的 Unicode 码点,比如\xA9表示版权符号。这种方法也只能输出256种字符。
  • \uXXXX
    \u后面紧跟四个十六进制数(0000到FFFF),代表一个字符。HHHH对应该字符的 Unicode 码点,比如\u00A9表示版权符号。
  1. 字符集
  • 每个字符在javascript中都以16位(2个字节)的utf-16格式储存
  • JavaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。
  • 由于历史原因,对于码点在U+10000到U+10FFFF之间的字符,JavaScript 总是认为它们是两个字符
  1. Base64 转码
  • 文本有不可打印的符号可以使用base64转码
  • btoa():任意值转为 Base64 编码
    atob():Base64 编码转为原来的值
  • 必须是ASCII 码的字符
2.5对象
  • 对象就是hash,就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
  • 对象中所有的key(键名)的都是字符串,如果是数值会自动转换为字符串
  • 如果key不符合标识符的条件,(比如第一个字符为数字,或者含有空格或运算符且也不是数字),必须加上引号
  • key也叫属性,如果value为函数,那么通常把这个属性称为“方法”,如果属性的值还是一个对象,就形成了链式引用。
  • 如果只采用大括号。JavaScript 规定,如果行首是大括号,一律解释为语句(即代码块),如果想表达对象则要咋在外加上圆括号({a:123})
  • 读取属性obj.p或者obj['p'] 如果不加引号则指向一个变量
  • 查看对象的所有属性Object.keys
    -delete命令可以删除对象的属性,删除不存在的属性也会返回true,不能删除继承的属性
  • in运算符检查某个对象是否包含某个属性(key) (不能识别是否为继承的,都会返回true)
  • for(...in...){}用于遍历对象的全部属性
  • with 语句用来批量操作同一个对象的多个属性(如果with区块内部有变量的赋值操作,必须是当前对象已经存在的属性,否则会生成一个全局变量)
2.6数组
  • 数组其实是固定key的对象(hash),key['0'],['1'],['2'].['3'],['4']...都是字符串
  • 数组的length是其中最大key+1,不是其中的个数
  • 当数组的某个元素是空元素,即2个逗号之间没有任何值,我们称改数组存在空位
  • 空位不会影响length属性,空位是可读取的,返回undefined,delete命令删除某个属性,这个位置就形成了空位
  • 空位就是数组没有这个元素,所以不会被遍历到,而undefined则表示数组有这个元素,值是undefined,所以遍历不会跳过。
  • 类似数组的对象,特征是具有lenght属性,length不是动态的
  • 可以使用var arr = Array.prototype.slice.call(arrayLike)把对象变成真正的数组

你可能感兴趣的:(观阮一峰老师js教程笔记)