书评-YDKJS入门与进阶

第一章:进入编程

代码

代码是一组告诉计算机要执行什么任务的特殊指令。通常保存在文本文件中,也可以在浏览器的开发者控制台中直接键入代码。

语句

一组单词,数字,和执行一种具体任务的操作符构成了一个语句。语句包含了变量、字面量、操作符。例如a = b * 2; 就是一个语句,而 a、b 是变量,2是字面量,=、* 是操作符。

表达式

一个表达式是一个引用,指向变量或值,或者一组用操作符组合的变量和值。

2 -> 字面量表达式
b -> 变量表达式
b * 2 -> 算数表达式
a = b * 2 -> 赋值表达式
alert(a) -> 函数表达式

执行一个程序

JavaScript引擎实际上在即时地自上而下的编译程序然后立即运行编译好的代码。

第二章:进入 JavaScript

值与类型

内建类型有:string,number,boolean,null,undefined,symbol,object。
通常我们可以用 typeof 来判断类型,但是 JS 中存在一个 bug,就是 typeof null 为 object,这个可以通过 Object.prototype.toString.call(null) 来进行判断。

值的比较

true 和 false

'', 0, -0, NaN, null, undefined, false 转 Boolean 为 false,其余都是true。

等价性

不准确的描述:== 检查值的等价性而 === 检查值和类型两者的等价性。
合理的描述: == 在允许强制转化的条件下检查值的等价性, === 是在不允许强制转换的条件下检查值的等价性。

this 标识符

function foo() {
    console.log( this.bar );
}

var bar = "global";

var obj1 = {
    bar: "obj1",
    foo: foo
};

var obj2 = {
    bar: "obj2"
};

// --------

foo();              // "global"
obj1.foo();         // "obj1"
foo.call( obj2 );   // "obj2"
new foo();          // undefined
  1. foo() 最终在非 strict 模式中将 this 设置为全局对象 —— 在 strict 模式中,this 将会是 undefined 而且你会在访问 bar 属性时得到一个错误 —— 所以 this.bar 的值是 global。
  2. obj1.foo() 将 this 设置为对象 obj1。
  3. foo.call(obj2) 将 this 设置为对象 obj2。
  4. new foo() 将 this 设置为一个新的空对象。

原型

它的最简单的方法是使用称为Object.create(..)的内建工具。

var foo = {
    a: 42
};

// 创建 `bar` 并将它链接到 `foo`
var bar = Object.create( foo );

bar.b = "hello world";

bar.b;      // "hello world"
bar.a;      // 42 <-- 委托到 `foo`

旧的与新的

有两种主要的技术可以将新的JavaScript特性“带到”老版本的浏览器中:填补和转译。

填补

ES6定义了一个称为Number.isNaN(..)的工具,来为检查NaN值提供一种准确无误的方法

if (!Number.isNaN) {
    Number.isNaN = function isNaN(x) {
        return x !== x;
    };
}

优秀填补例子: ES5-ShimES6-Shim

转译

ES6增加了一个称为“默认参数值”的新特性。

function foo(a = 2) {
    console.log( a );
}

foo();      // 2
foo( 42 );  // 42

转译器会将它转换为老版本语法

function foo() {
    var a = arguments[0] !== (void 0) ? arguments[0] : 2;
    console.log( a );
}

优秀转译器例子: BabelTraceur

第三章:进入 YDKJS

作用域与闭包

JS 是“解释型语言”因此是不被编译的,这是错误的。JS 引擎在你的代码执行的前一刻(有时是在执行期间!)编译它。
闭包的一个重要应用是模块模式。

this 与对象原型

最大的谬误之一是认为 this 关键字指代它所出现的函数,这是错误的。
this 关键字是根据函数如何被执行而动态绑定的。

类型与文法

理解强制转换,而不是杜绝它的存在。

异步与性能

Prmise 是一个“未来值”的一种与时间无关的包装,它让你推理并组合这些未来值而不必关心它们是否已经准备好。另外,它们通过将回调沿着一个可信赖和可组装的 promise 机制传递,有效地解决了 IoC 信任问题。
Generator给JS函数引入了一种新的执行模式,generator可以在yield点被暂停而稍后异步地被继续。这种“暂停-继续”的能力让generator在幕后异步地被处理,使看起来同步,顺序执行的代码成为可能。如此,我们就解决了回调的非线性,非本地跳转的困惑,并因此使我们的异步代码看起来是更容易推理的同步代码。

ES6与未来

很多值得一读的激动人心的ES6特性:结构,参数默认值,symbol,简洁方式,计算属性,箭头函数,块儿作用域,promise,generator,iterator,模块,代理,weakmap等。
JavaScript 的未来是光明的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容