01语法

2017-11-10  本文已影响0人  我_巨可爱

基本类型

  1. 变量二次声明无意义,除非在第二次声明的时候,也赋值
  2. 有一些保留字
  1. while只有一条语句的时候可省略大括号
  2. 循环标签使用方式

数据类型

  1. String,Number,Boolean,Undefined,Null,Object
  2. 使用typeof后有string,number,boolean,undefined,object,function
  1. undefinednull使用==相等。计算时,undefinedNaNnull是0
  2. 返回布尔值的地方
  1. 转化为false的情况
  1. if后需要布尔类型,[]{}其实是true

数值

  1. Number.MAX_VALUENumber.MIN_VALUE
  2. 科学记数法
  1. 各进制前缀,0x十六,0o八,0b
  2. NaN和isNaN()
  3. Infinity和isInfinity()
  4. parseInt()第二个参数说明了数据是什么进制。同时,只能转化为十进制

字符串

  1. 长字符换行,每行后用\
  2. 转义字符
  1. bitByteKBMBGBTB
  1. Base64是最常见的用于传输(8Bit)字节码的编码方式
  2. ASCII 是针对英文字符编码的方式
  3. Unicode 是针对多种语言进行编码的方式
  1. GBK本来扩展自ASCII,后渐渐形成GBK。因为还有很多少数名族的语言

对象

  1. 创建对象
  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. 关于属性的两个方法

数组

  1. 其实arr[0]等同与arr['0']arr[0.00]
  2. 类数组对象
  1. 类数组转化成数组
  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. 错误类型和出现原因
  1. catch中的return语句会延迟到finally中执行

编程风格

  1. 关于()和空格的问题
  1. 全局变量可以使用大写区分
  2. 建议不要将目的不同的语句合并成一行、
上一篇下一篇

猜你喜欢

热点阅读