《你不知道的Javascript》学习笔记
简介
- 众所周知,JavaScript 既是一门充满吸引力、简单易用的语言,又是一门具有许多复杂微妙技术的语言,即使是经验丰富的JavaScript 开发者,如果没有认真学习的话也无法真正理解它们。
- 如果每次遇到JavaScript 中出乎意料的行为时,你的反应就是把它加入黑名单(很多人都是这么做的),那用不了多久你就会把JavaScript 语言真正的多样性全部排除。
- 现在你所理解的JavaScript 很可能是从别人那里学来的不完整版。这样的JavaScript 只是真正的JavaScript 的影子。
- 由于JavaScript 不必理解就可以使用,如果只是为了开发够用的功能全面的程序,那么大可不必深入理解语言内部的机制,遇到不起效的代码换个写法或者直接绕过就是了。
- 但如果不满足于只是让代码正常工作,而是想要弄清楚“为什么”代码会这么去运行的话,那么好好学习并且深入理解整个JavaScript,尤其是那些“难的部分”。掌握了这些知识之后,无论什么技术、框架和流行词语你都能轻松理解。
上篇 - 作用域和闭包
LHS和RHS
- 简单来讲,LHS就是:现在我有个值,我要找个变量,然后把这值给它;而RHS则反过来,就是我现在读到一个变量了,我需要找到它的值。
- 在变量还没有声明(在任何作用域中都无法找到该变量)情况下,这两种查询行为是不一样的。
function foo(a){
console.log(a+b);
b=a;
}
foo(2);
- 以上代码对b进行RHS的时候无法找到该变量的值,则会抛出ReferenceError异常。而如果是LHS找不到变量,非严格模式下,会在全局作用域中,创建一个具有该名称的变量,严格模式下,会抛出与RHS类似的异常。
上篇 - this和对象原型
中篇 - 类型和语法
中篇 - 异步和性能
下篇 - 深入Javascript编程
下篇 - ES6与其新特性
参考资料
结束语
不开口,没有人知道你想要什么;不去做,任何想法都只在脑海里游泳;不迈出脚步,永远找不到你前进的方向。其实你很强,只是懒惰帮了你倒忙。
《你不知道的Javascript》学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
- ucos实时操作系统学习笔记——任务间通信(消息)
ucos另一种任务间通信的机制是消息(mbox),个人感觉是它是queue中只有一个信息的特殊情况,从代码中可以很清楚的看到,因为之前有关于queue的学习笔记,所以一并讲一下mbox.为什么有了qu ...
随机推荐
- 详细的git入门级别,从安装到实战
拥有自己码云开源网站,想要上传项目到码云怎么操作?公司新技术提升由Svn转为Git,慌不慌?想要从Github开源网站下载开源项目,难道还依赖直接下载项目然后解压导入项目工程?下面可以通过及其简易且好 ...
- Ctrl +c 脚本中
#!/bin/bashsar -n DEV 1 111111111111111 >>1.txt & #实时网卡流量数据 sleep 3 && kill -2 ...
- CMake变量(提供信息的变量)
目录 CMAKE_VERSION CMAKE_MAJOR_VERSION CMAKE_MINOR_VERSION CMAKE_PATCH_VERSION CMAKE_TWEAK_VERSION CMA ...
- one_day_one_linuxCmd---wget命令
<坚持每天学习一个 linux 命令,今天我们来学习 wget 命令> Linux wget 是一个文件下载工具,它用在命令行下,使用也非常方便,不但体积小而且功能完善,并支持很多强大的功 ...
- Android java项目中引用kotlin,混合开发工程配置
https://www.jianshu.com/p/9220227cdfb3 buildscript { ext.kotlin_version = '1.2.71' repositories { go ...
- android设备内部添加apn信息
由于工作原因今天需要给多台android设备中写入某张sim卡的apn相关信息,虽然可以通过sqlite命令写sql语句来写入到设备中,但设备一多起来就太低效了,所以在学习的过程中摸索着写了一个将ap ...
- ubuntu18.04国内软件源
ubuntu默认的软件源是国外的,下载软件很慢,需要更新为国内的源以提升速度,现在可以通过ubunt software来设置了,不过还是习惯了命令行修改的方式. 更新方法 123 sudo vi /e ...
- ZJNU 1426 - YNingC的困惑
注意到N最大只有1e6,但是xy最大有2e8,直接模拟2e8会超时 所以可以将1e6个区间离散化后模拟,模拟时的最坏情况为2e6满足题意 /* Written By StelaYuri */ #inc ...
- Linux系统如何记录时间
1.内核在开机启动的时候会读取RTC硬件获取一个时间作为初始基准时间,这个基准时间对应一个jiiffies值(这个基准时间换算成jiffies值的方法是:用这个时间减去1970-01-01 00:0 ...
- vue-resource CRUD示例
GET请求 var demo = new Vue({ el: '#app', data: { gridColumns: ['customerId', 'companyName', 'contactNa ...