01语法

基本类型

  1. 变量二次声明无意义,除非在第二次声明的时候,也赋值
  2. 有一些保留字
  • javascript保留字
  • 使用保留字报错类型:Uncaught SyntaxError: Unexpected token finally
  1. while只有一条语句的时候可省略大括号
  2. 循环标签使用方式
  • 在需要跳出的for循环层添加label
  • continuebreak后添加同名label

数据类型

  1. String,Number,Boolean,Undefined,Null,Object
  2. 使用typeof后有string,number,boolean,undefined,object,function
  • 注意和数据类型相比,少了null多了function
  • 结果都是小写
  1. undefinednull使用==相等。计算时,undefinedNaNnull是0
  2. 返回布尔值的地方
  • 关系运算符
  • &&,||,!
  1. 转化为false的情况
  • '',0,NaN,undefined,null,false
  1. if后需要布尔类型,[]{}其实是true

数值

  1. Number.MAX_VALUENumber.MIN_VALUE
  2. 科学记数法
  • 当小数点前有21位,还是正常显示。有22位,开始科学计数
  • 当小数点后有5位0,正常显示。有6位0,开始科学计数
  1. 各进制前缀,0x十六,0o八,0b
  2. NaN和isNaN()
  3. Infinity和isInfinity()
  4. parseInt()第二个参数说明了数据是什么进制。同时,只能转化为十进制

字符串

  1. 长字符换行,每行后用\
  2. 转义字符
  • 可有转移符号\n,\r,\t,\\
  • 可有转移字符,都对应unicode码点
    • \HHH三位八进制
    • \xHH两位十六进制
    • \uHHHH四位十六进制
  1. bitByteKBMBGBTB
  • 存储单位和网速的单位,不管是 B 还是 b,代表的都是 字节 Byte。
  • 带宽的单位,不管是 B 还是 b,代表的都是 比特 bit 。
  1. Base64是最常见的用于传输(8Bit)字节码的编码方式
  2. ASCII 是针对英文字符编码的方式
  3. Unicode 是针对多种语言进行编码的方式
  • 为了解决Unicode编码在互联网上传播的问题,各种规范出现utf-8,代表每次8个位传输数据
  1. GBK本来扩展自ASCII,后渐渐形成GBK。因为还有很多少数名族的语言

对象

  1. 创建对象
  • {}
  • new Object
  • Object.create(prototype),这种可以利用原型创造一个新的对象,经常用在继承
  1. 对象引用
  • 两个变量对引用同一个对象,则共用
  • 其中一个取消对对象的引用,不会影响另外一个
var a = {}
var b = a
a = 1
console.log(b)  // {}
  1. 检测全局变量,使用a in window方式,如果直接使用if(a)在没有a的情况下会报错
  2. delete成功删除之后返回true,不能删除继承的属性
  3. in用于检测对象是否含有某个属性,也就是键名
  4. for in遍历对象和继承的可遍历属性,跳过不可枚举属性
  5. 关于属性的两个方法
  • Object.defineProperty(obj,propName,{})
  • obj.hasOwnProperty()

数组

  1. 其实arr[0]等同与arr['0']arr[0.00]
  2. 类数组对象
  • arguments
  • 元素集合
  • 字符串
  1. 类数组转化成数组
  • Array.property.slice.call(arrayLike)
  1. 数组也能使用in,会将索引和属性遍历出来
  2. 数组空位计算在内,但是空位和undefined是不一样的。使用数组的forEach方法、for...in结构、以及Object.keys方法进行遍历,空位都会被跳过

函数

  1. 不会重载,后边的会覆盖前边的同名函数
  2. if语句块中只能使用函数表达式,不能使用函数定义
  3. fn.name属性返回紧跟在function关键字之后的那个函数名
  4. fn.name返回定义时参数个数
  5. fn.toString()返回函数的源码
  6. 函数的作用域是定义时所在的作用域,和运行时作用域无关
var a = 1;
var x = function () {
  console.log(a);
};
function f() {
  var a = 2;
  x();
}

f() // 1
  1. 当函数传入对象作为参数的时候
  • 如果修改对象某个属性,将对外部存在影响
  • 如果是替换掉整个参数,不会影响到外部
  1. 同名参数,取后出现的值。即使只传入第一个,但是也会取后者undefined
  2. arguments.callee返回函数本身
  3. 闭包作用
  • 读取函数内部的变量
  • 让变量始终保存在内存中,保存上次运行的状态
  1. 函数的立即调用有两种写法
  2. eval在严格模式下,声明变量不能影响外部变量。但是赋值语句等还是可以改变外部变量值

运算符

  1. 字符串的比较是按照字典的顺序,靠后的大
// 严重注意,字符串形式的数值比较
'2' > '11'  // true
[2] > [11] // true,因为会转换成 '2' > '11'
  1. 对象参与比较,会调用obj.valueOf().toString()
  2. 进制不同,但是转化为10进制相同,就全等
  3. 严格相等运算符比较的是地址,而大于或小于运算符比较的是值。
{} === {} // false
[] === [] // false
  1. 原始数据类型有string,number,boolean。它们混合比较的时候,会转换成数值类型再进行比较
'true' == true //false 
// 第一步 Number('true') ---> NaN
// 第二部 Number(true) ---> 1
// NaN == 1 ---> 结果为false
  1. 对象与原始类型值比较,对象转化成原始类型的值,再进行比较。
[1] == 1 // true
[1] == '1' // true
[1] == true // true
  1. 逻辑运算符和位运算符,位运算符可以用来扩大或缩小2的n次方
  2. void用来防止页面跳转
  3. 赋值运算符和三元运算符,是从右到左的

数据类型转换

  1. 主要是String,Boolean,Number之间的转换

错误处理机制

  1. Error的namestack属性存在兼容问题,后者可以显示错误首先是在哪里抛出的
  2. 错误类型和出现原因
  • synaxError 语法错误
  • referenceError 引用错误
    • 调用不存在的值
    • 不允许赋值
  • typeError 类型错误
    • 由 new 引起,不能对基本类型使用 new
  • URIError url参数不正确的时引起
    • 主要由编码的几种方法引起
  • evalError 使用错误
  • rangeError
  1. catch中的return语句会延迟到finally中执行

编程风格

  1. 关于()和空格的问题
  • 定义非匿名函数和调用函数,函数名和()不能有空格
  • 其他情况,都有一个空格
  1. 全局变量可以使用大写区分
  2. 建议不要将目的不同的语句合并成一行、
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,282评论 0 4
  • 标签: 我的笔记 ---学习资料:http://javascript.ruanyifeng.com/ 1. 导论 ...
    暗夜的怒吼阅读 867评论 0 1
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,537评论 5 28
  • 然而也知道原因。晚安,虽然你眼睛不够大,腿不够长,能力不够强,可我会一直爱你。即使全世界都抛弃你,我也会永...
    九月的少年梦阅读 191评论 0 0
  • 先生亲述: 习武,乃文人贵事智勇顺成贵和之术,非常人所能为。 形意拳,历史悠久,源远流长,它受我们祖先传统的哲学思...
    295442de7134阅读 456评论 0 0