js语复习笔记(一)

js语复习笔记(一)

js解析代码

1. js仅在不加分号无法解析的情况下才自动添加

var a
a
=
3
console.log(a)

将会被解析为:

var a;
a = 3;
console.log(a);

2. 不添加“;”可能导致错误

var y = x + f
(a+b).toString()

会被解析为:

var y = x + f(a+b).toString()

3. 在默认情况下的解析情况:

return、break、continue和之后的表达式不能换行,否则会在前者关键字后添加;
前缀,后缀运算符的解析:后缀运算符应与表达式处于同一行,
    x
    ++
    y
将被解析为x;++y

js的数据类型:原始类型和对象类型

原始类型:数字、字符串、布尔值、null、undefined

1. 数字:
  1. 较为复杂的运算定义在Math对象中
  2. 预定义了全局变量NaN,Infinity(ES5只读,不可修改)
  3. 对于NaN的判断,应该用x!=x,仅当x等于NaN为真,其中NaN!=NaN
  4. js的计算精度问题:.3-.2 != .2 - .1
  5. 日期中,Date().getMonth(),[0,1,2,3,4,5,6]对应[“日”,”一”,”二”,”三”,”四”,”五”,”六”]
2. 文本:
  1. 注意对特殊字符的转义,例如在字符串中含有can’t应注意写为can\’t
  2. 一些特殊的转义字符,\n,\t,\\等
  3. 字符串的几种方法:length、charAt、slice、indexOf、split、lastIndexOf、substring,toUpperCase,toLowerCase,replace
  4. 正则匹配,RegExp(重点)
3. 布尔值:
  1. flase转换:undefined、null、0、-0、NaN、”“
  2. \==与===的区别
4. null和undefined:
  1. type of null => object
  2. type of undefined => undefined
  3. 两者区分要用严格判等符 ===
5. 全局对象:
  1. 在读取字符串、数字、布尔值的属性值时表现得像对象,但是为其属性赋值则会忽略

类型转换:

1. 隐式示例:
10 + "objects" => "10 objects"
"7"*"4" => 28
"5"+4 => "54"
var n = 1 - "x" => NaN
n + "objects" => "NaN objects"
+"5"=> 5
2. 显示转换:

惯用写法:

x + "" => String(x)
+x => Number(x)
!!x => Boolean(x)
3. 进制的转换:
var n = 17;
n.toString(2) // => 10001 转换为2进制
"0x" + n.toString(16) // => 0x11
4. 利用全局函数parseInt()、parseFloat()进行解析

此种方式会跳过任意数量前置空格,并且解析尽可能多的数值字符

parseInt("3 build mice") // => 3
parseInt("3.14 meters") // => 3.14
parseInt(".1") // => NaN
parseFloat(".1") // => NaN

parseInt还可以接受第二个可选参数、指定数字转换的基数,合法取值为2~36

5.所有的对象均转换为true,new Boolean(false)同样转换为true

变量声明:

1. var声明,全局变量、局部变量
2. 变量声明提前(不赋值)
var scope = "global";
function f(){
    console.log(scope); // => undefined
    var scope = "local";
    console.log(scope); // => local
}

在这段代码中,由于声明提前,scope不再是全局变量了,该代码与下面代码效果相同

var scope = "global";
function f(){
    var scope;
    console.log(scope); // => undefined
    scope = "local";
    console.log(scope); // => local
}

表达式与运算符

表达式类型:

1.原始表达式:
  • 包括直接出现的常值,类似:1.23 “hello” /patter/
  • js中的保留字构成的原始表达式: true、false、null、this
  • js中的变量
2. 对象及数组初始化表达式
  • []、[1,2,3]、[1,,,4]数组初始化表达式
  • {}、{x:1, y:-1.2}对象初始化表达式
3. 函数表达式
var f = function(x){return x*x}
4. 属性访问表达式
  • 通过”.”访问,局限是属性名不能是保留字符 => expression.identifier
  • 使用”[]”访问,指定要访问的属性名或者索引 => expression[identifier]
5. 调用表达式
  • 包含函数与参数,例如:f(0)、Math.max(1,2,3,4)
6. 对象创建表达式
  • 利用关键字new,构造函数
7. 算术表达式
  • 算术计算的顺序,例如:
var a = 1,b;
b = (a++)+a // => b=2
/*
    过程为,计算b,计算a++(设值为c),计算a,计算a+c,将值赋给b
*/
  • 计算符号:
    按位与&,按位或|,按位异或^,按位非~,左移<<,右移>>,含符号右移>>>,含符号左移<<<
  • 不同类型的操作数比较:
"1" < "2" => true
"11" < 2 => false
"11" < "2" => true
  • in操作符:
var point = {x:1, y:1};
x in point; // => true
z in point;// => false
"toString" in point; // => true 继承自object

var data = [4,5,6]
1 in data; // => true 1被转换为"1",数组包含索引1
"0" in data; // => true
5 in data;  // => false 数组不包含索引5的元素
  • typeof运算符:
x typeof x
undefined “undefined”
null “object”
true or flase “boolean”
任意数字、NaN “number”
任意字符串 “string”
任意函数 “function”
任意内置对象 “object”
任意宿主对象 由编译器中自己实现的字符串,非基本类型

猜你喜欢

转载自blog.csdn.net/Shaft_/article/details/81206397