Ahri-珊

JS简介

基本(简单)数据类型

1.Number

64位浮点数,没有整型之分(避免了短整型溢出问题)。 指数部分全为1、小数部分非零表示NaN。NaN不等于任何值包括自己,只能用isNaN(number)检测。

2.String

JS中所有字符都是16位的。

3.Boolean

false, undefined, null, ‘’, 0, NaN值为假,其余都为真。

4.undefined

5.null

6.symbol

复杂数据类型Object

对象通过引用来传递。对象字面量产生的对象连接到Object.prototype。

var a = { x: 1, y:2 };
var b = a;
b.z = 3;
console.log(a.z); // 3

原型继承(hasOwnProperty不会检查原型方法)

var Foo = function () {
    this.x = 1;
    this.y = 2;
};
var a = new Foo();
var b = {};
b.prototype = a;
a.z = 3;
a.m = 5;
b.n = 6;
console.log(a, b);
// a:{x: 1, y: 2, z: 3, m: 5}
// b:{prototype: Foo, n: 6}
console.log(b.hasOwnProperty('m')); // false
console.log(b.hasOwnProperty('n')); // true

JS基本理解

理解JS的变量在内存中的具体存储形式并根据此理解作用域、垃圾回收机制和闭包

https://simmin.github.io/2016/10/10/some-js-concept/

类型比较(==)

同类型比较:

不同类型比较:

不同类型会转换成相同类型比较。转换规则见下图:

equelList

正则

注意:正则表达式只能写在一行里,不允许换行

非捕获型分组 (?:…)

非捕获型分组可选 (?:…)?

捕获型分组 (…)

字符类 […]

范围符 -

字符类匹配一次或多次 […]+

除去…的字符类 [^…]

斜杠和杠需要加转义字符 写为\/ -

定义斜杠匹配次数0次或1-3次 \/{0,3}

正则练习题

需求:在分组1中匹配meta中author属性的值
源串:
<meta author="Zjmainstay" />
another author="Zjmainstay too"
预期:分组1得到Zjmainstay
正则:(/(author="([\w ]+)")/).exec()

函数

函数也是一个对象。函数对象连接到Function.prototype。Function连接到Object.prototype。每个函数对象有两个隐藏属性-函数上下文和实现函数行为的代码。

语句执行

按从上到下的顺序执行,通过条件语句、循环语句、强制跳转语句(break, return, throw)和函数调用改变执行序列。 document.write() 会导致html重新解析