note-javascript

  1. 《JavaScript 精解》
    1. 浏览器对象
      1. output
    2. concept
      1. 数据类型:
    3. modular
    4. Http
    5. ES6 ECMAScript6 http://es6.ruanyifeng.com/
    6. ES6 ECMAScript6

JavaScript高级程序设计
https://book.douban.com/subject/10546125/

ES6
https://es6.ruanyifeng.com/

https://developer.mozilla.org/en-US/
https://nodejs.org/en/docs/
https://exploringjs.com/

https://javascript.info/async-await

JavaScript教程-廖雪峰

《JavaScript 精解》

浏览器对象

window , navigator , screen , History , Location .

output

window.alert() ; document.write() innerHTML console.log()
prompt( ) ; confirm() ;

递归效率比循环慢 10 倍。
对象即集合。

Arguments 魔力特殊变量

高阶函数

concept

JavaScript 使用 Unicode 字符集。(变量名也可以用中文,但是,请不要给自己找麻烦。)
JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。

数据类型:

字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)。

JavaScript的设计者希望用null表示一个空的值,而undefined表示值未定义。事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null。undefined仅仅在判断函数参数是否传递的情况下有用
“use strict” 指令只运行出现在脚本或函数的开头。

原型污染。判读一个熟悉属于对象自身,还是他的原型。
对象即词典,扮演两种角色:

  1. 拥有方法的值。原型对其有利。
  2. 属性集。 原型只有阻碍。

接口, can be combination , can be forecast .

字符串
转义: \
... 多行字符串
模板字符串

Arrary
直接给Array的length赋一个新的值会导致Array大小的变化:

map set
Map和Set是ES6标准新增的数据类型,请根据浏览器的支持情况决定是否要使用
new map() ; map.set() ;

Iterable
具有iterable类型的集合可以通过新的for … of循环来遍历。
for … of循环是ES6引入的新的语法
for … in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。
for … of循环则完全修复了这些问题,它只循环集合本身的元素:
更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。

this
在strict模式下让函数的this指向undefined

apply() apply()把参数打包成Array再传入;
call() call()把参数按顺序传入
现在假定我们想统计一下代码一共调用了多少次parseInt(),可以把所有的调用都找出来,然后手动加上count += 1,不过这样做太傻了。最佳方案是用我们自己的函数替换掉默认的parseInt():

变量
变量名是大小写英文、数字、$和_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,
如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量

变量提升
全局作用域 全局对象(window)

JavaScript 只有一种数字类型。数字可以带小数点,也可以不带:var x1=34.00; 极大或极小的数字可以通过科学(指数)计数法来书写:
var y=123e5; // 12300000
var z=123e-5; // 0.00123

布尔(逻辑)只能有两个值:true 或 false。
Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。

当您声明新变量时,可以使用关键词 “new” 来声明其类型:
var carname=new String;
var x= new Number;
var y= new Boolean;
var cars= new Array;
var person= new Object;
JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。对象有属性和方法,是两者的容器。
原始值字符串,如 “John”, 没有属性和方法(因为他们不是对象)。原始值可以使用 JavaScript 的属性和方法,因为 JavaScript

在执行方法和属性时可以把原始值当作对象。
{var x = “John”;
var y = new String(“John”);
typeof x // 返回 String
typeof y // 返回 Object } # 不要创建 String 对象。它会拖慢执行速度,并可能产生其他副作用
switch 语句会使用恒等计算符(===)进行比较

function myFunction(a, b) { return a * b;} 当函数执行遇到return后 立即返回, return 后面的语句不会再执行。
JavaScript 有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。

JavaScript引擎在行末自动添加分号

javascript:void(0) 中最关键的是 void 关键字, void 是 JavaScript 中非常重要的关键字,该操作符指定要计算一个表达式但是不返回值。
for循环等语句块中是无法定义具有局部作用域的变量,解决: 用 “let”

output :
windown.alert() , document.write() , innerHTML , console.log()

!!如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。即使它在函数内执行。
在 HTML 中, 全局变量是 window 对象: 所有数据变量都属于 window 对象。

JavaScript == 与 === 区别
1、对于 string、number 等基础类型,== 和 === 是有区别的
a)不同类型间比较,== 之比较 “转化成同一类型后的值” 看 “值” 是否相等,=== 如果类型不同,其结果就是不等。
b)同类型比较,直接进行 “值” 比较,两者结果一样。
2、对于 Array,Object 等高级类型,== 和 === 是没有区别的进行 “指针地址” 比较
3、基础类型与高级类型,== 和 === 是有区别的
a)对于 ==,将高级转化为基础类型,进行 “值” 比较
b)因为类型不同,=== 结果为 false
4、!= 为 == 的非运算,!== 为 === 的非运算

null 和 underfined 的值相等,但类型不等
“5” - 1 // 返回 4 “5” 转换为 5

当你尝试输出一个对象或一个变量时 JavaScript 会自动调用变量的 toString() 方法

modular

js is not define how to modular

  1. function as namespace

Http

cache & media type ,
http is the best method for commutication and no need to hide .
<< http: the definitive guide >>-Gourley_Totty-book

http://es6.ruanyifeng.com/

ES6 ECMAScript6 http://es6.ruanyifeng.com/

ES6 ECMAScript6

http://es6.ruanyifeng.com/


--Write by Marcustar,关关雎鸠,在河之洲
目录
Download 相册