的一生中總要讀幾本經典書,在這個“經典”泛濫的年代,什么才是權威的代表,我想大概是一本的書的口碑,能積累下上佳口碑的書,往往也是能經得住時間推敲的。比如這本:
相信許多前端開發(fā)者的案頭都有這樣一本書。這本書最早的版本第 2 版可以追溯到 2010 年,有時候雖然覺得 2010 年離我們很近,但是卻已經有十年之久了。
這本書前前后后幫助幾代前端人從入門到進階,給大家留下不可磨滅的記憶,它除了是工具書中的翹楚,也是前端發(fā)展史的見證者。所以,很多程序員親切地稱它為JavaScript “紅寶書”。
當然也有一些初學者,聽到“高級”二字就被嚇退了,覺得這很難并不適合新手。但是其實這本書適用面很廣,不管你是新手還是高手,始終能從書中得到啟發(fā)和收獲,也能讓你做到常讀常新。
一本書能長銷 10 多年,離不開優(yōu)秀的作者團隊提供了優(yōu)質的內容,更重要的是每一版都在不斷優(yōu)化知識框架的設置,力求讓更多學習前端的人有更好的學習體驗。
目前,這本書第 1 版的作者已經去世。第 2 版,還有我們熟知的第 3 版的作者 Nicholas C.Zakas 如今也因身體原因退出了第 4 版的寫作,就像作者在 Twitter 上說的一樣:“《JavaScript高級程序設計》這本書這好像是一場每日秀,如今它迎來了第 3 任主持人。”
而新版作者 Matt Frisbie 將帶著更好的內容出發(fā)!
第3版作者Twitter截圖
先來介紹下,第 4 版的作者馬特·弗里斯比(Matt Frisbie),目前擔任 Gosellout 公司的 CTO,曾擔任谷歌公司軟件工程師,精通前端技術,擁有十余年 Web 開發(fā)經驗,除本書外另著有 AngularJS 等前端主題圖書。畢業(yè)于伊利諾伊大學厄巴納-尚佩恩分校,是一位經驗十足的前端。
以下是第 4 版的封面,學了這么多年,書封上拿望遠鏡的小孩終于站起來了,這是不是也預示著我們距離精通 JavaScript 又更近一步。
這一版仍舊延續(xù)上一版的框架和格局,刪減了已經過時的內容,在此基礎上又翔實地增補了 ES2015 到 ES2019 的全新內容,作者詳盡討論了 JavaScript 的各個方面,從 JavaScript 的起源開始,逐步講解到新出現的技術,其中重點介紹 ECMAScript 和 DOM 標準。
新版涵蓋了 ECMAScript 2019 ,全面、深入地介紹了 JavaScript 開發(fā)者必須掌握的前端開發(fā)技術,涉及 JavaScript 的基礎特性和高級特性。還同時介紹了近幾年來涌現的重要新規(guī)范,包括 Fetch API、模塊、工作者線程、服務線程以及大量新 API。
相信新版本一定會不負眾望,值得等待。
當然也有不少人有這樣的困惑,自己有了“犀牛書”,還要不要讀這本?
其實這個取決于你的學習階段,如果你是新手入門,那么推薦你讀這本《JavaScript高級程序設計》,如果你已經有一定基礎了,進階的時候可以用《JavaScript權威指南》。
犀牛書綜合讀者評論認為書較厚,像一本權威字典,有一點手冊化。可能不適合完全新手入門。優(yōu)點在于它列舉了很多很多細小微妙的坑,概念都很仔細地講解到位,例子淺顯易懂。
紅寶書內容比較實在,書中的例子易于理解,翻譯也要更流暢。可謂是各有各的特色。讀書嘛,找到適合自己的才最重要。如果時間充足大可兩本一起買來對照讀一下,好書不在多,多看多受益。
另外,這是來自第 3 版的讀者評價,我們也從讀者的角度給你的選購提供一些參考。
@恐龍:再次預言這本書能認真看十遍者,都能進BAT。
@阿琛:詳盡地解讀了JS這門語言的各個組成部分,透徹地剖析了JS所涉及的編程思想,深入淺出地演示了豐富的JS應用實例…讀完這本書你不一定就能成為前端大牛,但如果你真的能把這本書讀懂,吃透,那么你離JS高手肯定不遠啦!
第 4 版差不多有 900 頁,為了保證這本書能準時上市,這中間離不開譯者和編輯老師的通力配合。幾乎每周,大家都會坐下來溝通一下這本書的進度。
在本書正式印刷之前,譯者李松峰老師更是邀請了眾多前端大佬,幫忙審校,確保內容萬無一失。
大家都知道,工作一天利用下班時間來翻譯這本巨著,是需要超凡的耐力的。平時,我們看一本 900 頁的書都未必能堅持住,更何況是翻譯。但是李松峰老師做到了,這樣一件極其枯燥乏味的事情,李松峰老師卻把它做到了極致,這也不得不讓我們佩服。
. 函數提升 變量提升 函數提升優(yōu)于變量提升
2. 當函數名和變量名相同時,如果變量沒有被賦值,則函數生效,否則變量生效
3. var s=function g(){}
g 是只讀的, g只能在函數內部訪問
4. this 誰調用指向誰,沒人調用指向window
5. this 當函數創(chuàng)建時,this指向當前函數實例
6. es6簡寫的函數不能new,箭頭函數也不能new
7. 簡單的函數聲明不能new
8. 對象和閉包不能在一起,必須有分號
9. TDZ 暫時性死區(qū)
/逗比小憨憨
/*第一章
*HTML引用js方法:
*1,外部引用:HTML外部引用js:<script src="js/day1.js"></script>
*2,內部引用:<script> alert("逗比小憨憨");</script>
*3,元素事件引用:<input type="button" value="button" onclick="alert('welcome')" />
*/
/*第二章
* 變量定義:
* 1,變量由數字,字母,下劃線,$組成,且不能以數字開頭
* 2,變量不能使用系統(tǒng)關鍵詞
* 3變量定義語法:var 變量1=變量值,變量2=變量值,...;
*/
//舉例:
var a = 10;
document.write(a);//在頁面輸出一個內容
/*
* 數據類型:
* 1,基本數據類型:數字,字符串,布爾值,未定義值(undefined),空值(null)
* 2,引用數據類型:數組,對象
* 其中:數字不區(qū)分整型和浮點型
*/
/*
* 運算符:
* 1,算術運算符:+ - * / % ++ --
* 加法運算規(guī)則:數字+數字=數字; 數字+字符串=字符串; 字符串+字符串=字符串
* 2,
*/
//舉例:
var a = 10;
var str = "逗比小憨憨";
document.write(str + a, typeof(str + a));
/*
* 賦值運算符:= += -= *= /=
* 比較運算符:> < >= <= == !=
* 邏輯運算符:&& || !
* 條件運算符:var b=條件?表達式1:表達式2;//相當于C語言中三目運算符
*/
/*
* 表達式語句:一個分號對應一條語句
* 類型轉換:
* 1,隱式類型轉換(js自動完成的)
* 2,顯式類型轉換
* (1)字符串轉數字:Number(),parseInt(),parseFloat()(字符串必須是數字字符串)
* (2)數字轉字符串:toString
* (3)轉義字符:\' \" \n等
* 3,注釋: 單行注釋 和 多行注釋 用法:與C語言注釋一樣
*/
//舉例:
document.write("Number(\"123\"):" +Number("123") + "<br/>");
document.write(parseInt("+123.456px"));//第一個字符為+或-也進行轉換,從左往右取整數
document.write(parseFloat("123.456px"));
var num = 123;
document.write(num.toString());
/*第三章
* 流程控制:
* 1,順序結構:程序代碼從上到下,從左到右依次執(zhí)行
* 2,選擇結構:
* (1)if語句:(單重if)
* <1>:if(條件){語句塊}
* <2>:if(條件){語句塊} else{語句塊}
* <3>:if(條件){語句塊} else if(條件){語句塊} else{語句塊}
* (2)switch語句:
* switch(判斷值){ case 取值1:語句塊1;break;
* case 取值2:語句塊2;break;
* ...
* default:語句塊n;break;}
* 3,循環(huán)結構:
* (1)while循環(huán):
* while(條件){語句塊}
* (2)do...while循環(huán):
* do{語句塊}while(條件);
* (3)for循環(huán):
* for(初始化表達式;條件表達式;循環(huán)后操作表達式){語句塊}
*/
//舉例:計算1+2+3+...+100
var n = 1, sum = 0;
while(n <= 100)
{
sum += n;
n++;
}
*請認真填寫需求信息,我們會在24小時內與您取得聯系。