建立: 2017/10/09
更新: 2017/11/03 加上【wip】数组
废弃: 2019/02/19 重构此篇。原文纳入废弃闭包
增长【废弃中】标签与整体任务app
结束: 2019/03/12 完成废弃, 删除【废弃中】标签, 添加【废弃】标签函数
结束: 2019/03/03 完成废弃, 删除【废弃中】标签, 添加【废弃】标签this
函数的定义 | |||||||||||||||||||||||||||||||
全部声明不分顺序,自动排序 | |||||||||||||||||||||||||||||||
普通声明 | function test(a) { return a; } 只有这种在定义后在程序任何位置均可以呼出 |
||||||||||||||||||||||||||||||
函数字符来定义 | var sample = function(a) { 不会被预处理prototype
|
||||||||||||||||||||||||||||||
Object来定义 | var name = new function("x", "y", ... , "process")线程 最后一个是处理,前面都是参数指针 不会被预处理code
|
||||||||||||||||||||||||||||||
箭头函数式来定义 | var sample = x => x*x; 不会被预处理 |
||||||||||||||||||||||||||||||
嵌套函数 | 函数内部的函数
|
||||||||||||||||||||||||||||||
函数的呼出 | |||||||||||||||||||||||||||||||
函数的呼出方法 | function sample() {}
|
||||||||||||||||||||||||||||||
即时函数 (无名函数) |
定义与呼出同时进行
|
||||||||||||||||||||||||||||||
函数的参数 | |||||||||||||||||||||||||||||||
参数的省略 | 省略掉的为undefined undefined是没有赋值 null是赋予的是空值 |
||||||||||||||||||||||||||||||
不固定长度的参数 | 全部函数内部可用arguments
|
||||||||||||||||||||||||||||||
传值和传参 | object参数传送的是参照(指针) | ||||||||||||||||||||||||||||||
递归函数 | |||||||||||||||||||||||||||||||
三种写法 |
|
||||||||||||||||||||||||||||||
程序的编译与运行 | |||||||||||||||||||||||||||||||
生成全局对象 | |||||||||||||||||||||||||||||||
解析程序 | |||||||||||||||||||||||||||||||
运行程序 | |||||||||||||||||||||||||||||||
单线程 | |||||||||||||||||||||||||||||||
call对象及本地变量 | |||||||||||||||||||||||||||||||
this的值 | 被呼出函数所属对象 函数内部函数的this是全局变量 |
||||||||||||||||||||||||||||||
命名空间 |
var a = "a"; function f() { var b = "b"; function g() { var c = "c"; console.log(a+b+c); } } f();
|
||||||||||||||||||||||||||||||
垃圾回收 | 释放从全局对象没法到达的量 不用在乎 |
||||||||||||||||||||||||||||||
闭包 | |||||||||||||||||||||||||||||||
JavaScript的全部函数都是闭包 闭包内部能够有函数(闭包) |
|||||||||||||||||||||||||||||||
应用 | |||||||||||||||||||||||||||||||
命名空间 | |||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
用对象管理程序本地代码 |
var myApp = myApp || {}; myApp.login = ...; myApp.configs = {}; //部分空间内部再划分部分空间
全部东西追加成属性 |
||||||||||||||||||||||||||||||
用函数做为命名空间 |
(function () { // 程序全部内容写在这里 })();
module模式 // 做为即时函数,把module相关传递给指定参数 var Module = Module || {}; (function (_module) { var name = "none"; // 私有变量 function getName () { // 私有方法 return name; } _module.showName() = function () { // 公共方法 console.log(getName()); } })(Module);
|
||||||||||||||||||||||||||||||
做为对象(Object)的函数 | |||||||||||||||||||||||||||||||
函数也是对象 | ● 能够代入变量,对象属性, 数组元素 ● 能够做为函数的参数, 返回值 ● 能够有属性和方法 ● 能够做为不带名字的字符, 即无名函数 function () {} ● 能够动态生成 |
||||||||||||||||||||||||||||||
函数的属性(property) |
|
||||||||||||||||||||||||||||||
添加自定义属性 |
function test() {...} test.newProperty = "sample"; // 和其余对象添加属性同样写法
|
||||||||||||||||||||||||||||||
高阶函数 | |||||||||||||||||||||||||||||||
定义 | 以函数为参数或返回值的函数 | ||||||||||||||||||||||||||||||
回调函数 | |||||||||||||||||||||||||||||||
ES6关于函数的扩张 |