《Head First JavaScript 程序設計》

1 數(shù)據(jù)類型

1.1 數(shù)據(jù)類型列表

字符串煞檩、數(shù)字、布爾而涉、數(shù)組、對象联予、Null啼县、Undefined

1.2 true or false

1.2.1 == 與 ===

== 相等運算材原,如果比較對象類型不同,JavaScript 會先將比較對象轉(zhuǎn)化成相同類型再做比較季眷。
=== 嚴格相等運算余蟹,比較對象類型和數(shù)值都相同是才返回true。

        console.log("" == false); // true
        console.log("  " == false); // true
        console.log("1" == true); // true
        console.log(0 == false); // true
        console.log(1 == true); // true
        console.log((1 == "1")); // true
        console.log((1 === "1")); // false
        console.log((null == undefined)); // true
        console.log((NaN == NaN)); // false

1.2.2JavaScript中的5個假值:

undefined,
null,
0,
空字符串(如"", " ", " ")
NaN

2 函數(shù)

2.1 聲明函數(shù) 與 函數(shù)表達式 的區(qū)別

        log1("log1 start");
        log2("log2 start"); // Uncaught TypeError: log2 is not a function

        // 函數(shù)聲明
        function log1(message) {
            console.log(message);
        }

        // 函數(shù)表達式
        var log2 = function (message) {
            console.log(message);
        };

        log1("log1 end");
        log2("log2 end");

調(diào)用時機的差異
聲明函數(shù) 可以聲明前調(diào)用子刮,而函數(shù)表達式不行威酒。
上面的代碼log2("log2 start");那一行會報錯:Uncaught TypeError: log2 is not a function
原因:
瀏覽器分兩遍讀取網(wǎng)頁: 第一遍讀取所有的函數(shù)定義挺峡,第二遍開始執(zhí)行代碼葵孤。
聲明函數(shù)會在第一遍時被加載,而函數(shù)表達式要等到第二次才會被加載橱赠。在瀏覽器第二遍從上往下執(zhí)行代碼的時候log2("log2 start");var log2 = function (message) {執(zhí)行得早尤仍,所以log2在調(diào)用的時候還沒賦值,于是報錯狭姨。

2.2 閉包

閉包 = 有 自由變量函數(shù)

        function makeCounter() {
            var count = 0; // 自由變量

            function counter() {
                count = count + 1;
                return count;
            }

            return counter; // 這是一個閉包宰啦,在其環(huán)境中存儲了變量count
        }

        var counter1 = makeCounter();
        var counter2 = makeCounter(); // 每個counter都有各自的計數(shù)變量count,互不干擾
        console.log(counter1()); // 1
        console.log(counter1()); // 2
        console.log(counter1()); // 3
        console.log(counter2()); // 1
        console.log(counter2()); // 2
        console.log(counter2()); // 3

3 對象

3.1 對象的創(chuàng)建與使用

        var tom = {
            id: 1,
            name: "tom",
            age: 2,
            say: function (message) {
                console.log(this.name + " say: " + message);
            }
        };
 
        tom.say("hello");
        tom.father = "big tom"; // 動態(tài)添加屬性
        console.log(tom.father);  //big tom
        delete  tom.father; // 動態(tài)刪除屬性
        console.log(tom.father); //undefined

3.2 構造方法

        function People(name, age) {
            this.name = name;
            this.age = age;
            this.say = function (message) {
                console.log(this.name + " [age:" + age + "] say: " + message);
            }
        }
        // new 對象方式1
        var jack = new People("jack", 1);   // 注意構造方法前面要加 new
        jack.say("hello");
        // new 對象方式2
        var mikeParams = {
            name: "Mike",
            age: 20
        };
        var mike = new People(mikeParams);
        mike.say("Hi");

3.3 原型

通過原型(prototype)可以給類的所有實例對象的同時添加屬性送挑。
當單個實例修改prototype屬性時绑莺,不影響其他實例對象的prototype的值。

        People.prototype.gender = "man";
        console.log(jack.gender);   // man
        console.log(mike.gender);   //man
        jack.gender = "woman";
        console.log(jack.gender);   // woman
        console.log(mike.gender);   // man

4 事件

網(wǎng)頁加載完畢后方能通過getElementById獲取到DOM對象惕耕,而網(wǎng)頁加載完畢的事件是window.onload

        window.onload = init;

        function init() {
            console.log("init");
        }

5 HTML文件結(jié)構

image.png
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>

        function log(message) {
            console.log(message)
        }

    </script>
</head>
<body>
<button onclick="log('hello js')">click me</button>
</body>
</html>
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纺裁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子司澎,更是在濱河造成了極大的恐慌欺缘,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挤安,死亡現(xiàn)場離奇詭異谚殊,居然都是意外死亡,警方通過查閱死者的電腦和手機蛤铜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門嫩絮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人围肥,你說我怎么就攤上這事剿干。” “怎么了穆刻?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵置尔,是天一觀的道長。 經(jīng)常有香客問我氢伟,道長榜轿,這世上最難降的妖魔是什么幽歼? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谬盐,結(jié)果婚禮上甸私,老公的妹妹穿的比我還像新娘。我一直安慰自己设褐,他們只是感情好颠蕴,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著助析,像睡著了一般。 火紅的嫁衣襯著肌膚如雪椅您。 梳的紋絲不亂的頭發(fā)上外冀,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音掀泳,去河邊找鬼雪隧。 笑死,一個胖子當著我的面吹牛员舵,可吹牛的內(nèi)容都是我干的脑沿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼马僻,長吁一口氣:“原來是場噩夢啊……” “哼庄拇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起韭邓,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤措近,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后女淑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瞭郑,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年鸭你,在試婚紗的時候發(fā)現(xiàn)自己被綠了屈张。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡袱巨,死狀恐怖阁谆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓣窄,我是刑警寧澤笛厦,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站俺夕,受9級特大地震影響裳凸,放射性物質(zhì)發(fā)生泄漏贱鄙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一姨谷、第九天 我趴在偏房一處隱蔽的房頂上張望逗宁。 院中可真熱鬧,春花似錦梦湘、人聲如沸瞎颗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哼拔。三九已至,卻和暖如春瓣颅,著一層夾襖步出監(jiān)牢的瞬間倦逐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工宫补, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留檬姥,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓粉怕,卻偏偏與公主長得像健民,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贫贝,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容