javascript 忍者秘籍读书笔记
书名
"学徒"=>"忍者"
性能分析
console.time('sss')
console.timeEnd('sss')
函数
函数是第一类对象
通过字面量创建
function minjaFunction(){}
在变量或数组或者对象中的函数
let obj = {
name: 'zhangsan',
age() {
return 1
}
};
let arr = [1, 2, 3, 4, () => {
return 1;
}];
let nums=()=>{}
作用函数的参数来传递(高阶函数)
add=(x,y,f)=>{
return f(x)+f(y)
};
add(1,3,x=>x);
作用函数的返回值(闭包)
add=()=>{
let a=1;
return ()=>{
console.log(a)
}
}
具有动态创建和分配的属性(回调函数)
var add=function(){
console.log(add.age);
};
add.age='zhangsan';
add();
回调函数
函数作用另一个函数的参数,随后通过参数来调用该函数
function useless(nin){
return nin();
}
函数和对象的唯一区别
函数是可调用的,函数会被调用执行某项动作或者功能
纯函数缓存??
定义函数的方式
函数声明
function myFunction(){}
箭头函数(lambda函数)
item=>item*2
函数构造函数
let add=new Function('a','b','return a+b')
console.log(add(1, 3));
生成器构造函数
function* myGen(){
yield 1;
}
let a = myGen();
console.log(a.next());
函数表达式
let a=()=>{}
立即执行函数
()()
+function(){}();
-function(){}();
!function(){}();
~function(){}();
函数的实参+形参
形参是定义的时候传递的变量
实参是调用的时候传递的变量
剩余参数
...
默认参数
a=(a,b=0)=>{}
函数调用
this: 调用函数的上下文对象
arguments 参数表示函数调用过程中传递的所有参数
... 代替了arguments要做的事
let a=(...b)=>{console.log(b)} //箭头函数没有arguments
function a(){
console.log(Array.from(arguments));
}
> argumeng.length
> arguments是个伪数组
function fun(a = 3) {
arguments[0]=133;
console.log(a);
}
fun(10);//10
arguments只看调用的参数
调用函数的四种方式
* 作用函数
> func() 直接调用
> 作用函数被调用 this->window
* 作为方法
> a.func() 关联在一个对象上,实现面向对象编程
> 作用方法被调用,this-> 这个对象
* 构造函数
> new func() 实例化一个新的对象
> new 调用函数会触发
> 创建一个新的空对象
> 该对象作用this参数传递给构造函数
> 新构造的对象作为new运算符的返回值
* 通过函数的apply和call
> func.apply(null,[a,b])
> func.call(null,a,b)
* 通过bind() 改变this的指向 需要在后面加上() 让他执行
..........................................................................................................................................................
javascript 忍者秘籍读书笔记的更多相关文章
- javascript 忍者秘籍读书笔记(二)
闭包的私有变量 function Ninja() { let feints = 0; this.getFeints = function () { return feints }; this.fein ...
- 《javascript权威指南》读书笔记——第二篇
<javascript权威指南>读书笔记——第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字 ...
- 《javascript权威指南》读书笔记——第一篇
<javascript权威指南>读书笔记——第一篇 金刚 javascript js javascript权威指南 由于最近想系统学习下javascript,所以开始在kindle上看这本 ...
- 《JavaScript高级程序设计》读书笔记--前言
起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
- 《Javascript高级程序设计》读书笔记之对象创建
<javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...
- 《javascript权威指南》读书笔记(连载)
这是一篇很长的博客 终于把权威指南给买回来了,之前一直犹豫,第一:书太厚,怕买了不能坚持看完.第二:觉得太贵,最少100¥.现在实习也能发点工资了,给自己定了一个志愿:把一个月的工资用于买书.这么一想 ...
- 《JavaScript权威指南》读书笔记(一)
日期 2015-11-28 把之前的读书笔记在我弄丢它之前搬过来~~ 时间过去好久,回头一看理解都不一样了. 重点浏览了一下和Java的不同之处: js是一种宽松类型语言:js不区别整形数值与浮点型数 ...
- 你不知道的Javascript(上卷)读书笔记之一 ---- 作用域
你不知道的Javascript(上卷)这本书在我看来是一本还不错的书籍,这本书用比较简洁的语言来描述Js的那些"坑",在这里写一些博客记录一下笔记以便消化吸收. 1 编译原理 在此 ...
- JavaScript忍者秘籍——函数(下)
概要:本篇博客主要介绍函数的一些类型以及常见示例 1.匿名函数 使用匿名函数的常见示例: window.onload = function(){ assert(true,'power!'); }; / ...
随机推荐
- [转] golang 字符串比较是否相等
1 前言 strings.EqualFold不区分大小写,"==" 区分且直观. 2 代码 golang字符串比较的三种常见方法 fmt.Println("go" ...
- python 排序 插入排序与希尔排序
希尔排序是插入排序的升级版,先来了解插入排序 插入排序 算法思想: 插入排序再面对几乎已经有序的数据效率非常高,可以达到线性排序的效率 将数组元素插入已经有序的部分中,具体的过程是在有序的部分中通过比 ...
- open live writer安装以及代码高亮、折叠插件安装
一.目的 方便在本地写博客,不用在浏览器上写. 二.open live writer的安装 下载open live writer 这是我的 链接:https://pan.baidu.com/s/1u8 ...
- Lucene PriorityQueue & JDK PriorityQueue
麻蛋,原来是最小堆呀! 数据结构不熟害死人呀! 看来待复习复习数据结构了 在lucene源码中对多个段合并的时候,会先将多个段放到一个PriorityQueue中,不要被这个名字迷惑,这个Prior ...
- Windows 计算机取证
windows安全账号管理(SAM) Unveilling The Password Encryption Process Under Windows –a Practical Attack 上述这篇 ...
- QML MouseArea学习小结
QML中的MouseArea类型为用户进行简单的鼠标操作提供了方便. MouseArea是一个不可见的Item,通常与可见项目结合使用,以便为该项目提供鼠标处理.通过有效地充当代理,鼠标处理的逻辑可以 ...
- SQL报错注入
0x00:前言 sqli-libs第11关的报错注入,之前没有具体学习了解过,所以单独学习一下. 0x01:例子 uname=1&passwd=1' union select count(*) ...
- android studio学习----创建模拟器
建议在创建模拟器前把 SDK Manager 中的 Tools.Extras 都更新到最新. 如何弹出下面的各个图,首先直接点击 运行 然后会选择 launcher ,点击那个 ...就出来了 ...
- Linux shell while循环语句
for :明确循环次数 while :不确定循环换次数 while循环 (1) while CONDITION:do statement statement < ...
- nginx 缓存服务
1.nginx 缓存 upstream imooc { server 116.62.103.228:8001; server 116.62.103.228:8002; server 116.62.10 ...