>>所有權利。
因此，JavaScript的。
幾乎每個人都在這個房間 可能有某種程度的
舒適與它是否 這是遙想當年在SC50
或者它是個人 web項目甚至
如果你做了一些它與 過去的這個PHP基地項目，
但在大多數情況 的一部分，你們中許多人，
即使你有一些安慰
用JavaScript可能 沒有採取
理所當然的是如何 語言工程和發生的事情
在下面的發動機罩和 我們要去試試
今天做的是剝離背 一些技術層
什麼是JavaScript的，怎麼 它不同於語言
像PHP，怎麼能 不僅用於客戶端
而且服務器端和 然後重點非常明確
在此框架下，發現沒有JS 這實質上是一個運行時間，
與您的程序 可以執行JavaScript代碼，
服務器端和它之所以成為 越來越受歡迎排序
在同一個子這 大概Ruby和PHP的天
和Python，你會看到
它有一些很 強大的功能，通過某種方式
內置的語言 結構。
但首先，一些簡單的 東西只是提醒你
如何使用此語言的工作原理和 如果您看不到任何
這一點，只是喊的 出來，我們會調整。
所以，一個像在PHP中有 的主要功能沒有概念，
你剛開始寫代碼
你可以為此 上面解釋它到底部。
在瀏覽器的上下文中
或者在一些服務器端 我們會看到一些例子
在一個位。
條件，語法 相當於PHP和C，
C + +和其他一些語言 所以才給你的感覺
我們如何可以構建它，
還有的只是一個規範 條件。
布爾表達式，完全相同的 語法如您所見，
在那些相同的其他 語言，既為奧林格
而截至東西放在一起。
JavaScript有開關， 就像PHP和其他的做
而你沒有限制，像 在C組成的原語
像字符和整型實際上可以 做其他類型的值。
循環。所以，這是 完全相同的
大概十幾種語言， while循環，執行while循環
然後這一招在這裡。
所以，這是有點 被稱為快速枚舉
這是一個非常聰明的方法 只是像在PHP做
每個FU，酒吧 你同樣可以，
在一個JavaScript對象， 其中對象的名稱
這裡的變量，比如說​​，我變種 在對象和在每次迭代
此循環中，i是 將是1
從該對象的鍵。
所以，如果你有一個對象的 學生和學生都有一個ID
和一個名字和一所房子， 我反复將採取
ID和名稱的值和 房子，你可以為此指數
為對象，就好像它是 使用方括號的數組
符號來獲取值 密鑰ID或名稱
或房子等等。
並且與普通 假設，JavaScript對象，
性能不 一定保證
以相同的順序，這也是 真到PHP所以不要以為
事情會留 以相同的順序
你把這些關鍵 值對轉換成一個對象。
如何陣列？
有幾種方法 語法來寫
但是這可能是最 通用現在只是使用方
括號符號。
所以，這是一個變量，以 調用包含數字數組
六個整數那裡， 這裡有一個簡單的字符串
並注意什麼缺席 從這些例子中，
什麼是JavaScript 顯然欠缺。
是啊。那麼，有沒有概念 打字的，肯定不是
在這種情況下在這裡，但 這確實是一個字符串。
因此，JavaScript有類型 那的確是一個數組
這本身就是一種類型的 並且每個元件的
該數組是類型 數為JavaScript調用它們。
因此，它是一個鬆散類型 語言，我們會看到
即JavaScript的喜歡PHP 有標識運營商
和其他機制 實際上，簽什麼類型
有些變量是 既為錯誤檢查
和其他應用程序。
這裡是一個示例對象 只包含一個ID和名字。
現在，請注意，我們是 使用花括號表示法，
壓痕和白 空間是有點無意義
這宣告了一個 變量的名稱是羅布
和其ID為1和 日期類型是我們在這裡的數
並分別字符串。
然後這是 一些稍微不同的
如果你曾經做過什麼 使用Ajax可好？
您可能使用 像這樣的對象
但值得一提的這裡？
什麼是語法上不斷 所以不同的，只是一對夫婦
在此示例之間的事情 這是無可否認小
而這個更大的示例。
因此，首先在外行的 長期，這是什麼？
是什麼類型 工作人員會怎麼說？
好吧，它是一個數組， 這是一個什麼樣的數組？
>>對象。
>>好吧，它是一個對象數組。
而現在，著眼於只有一個 - 這些對象中的任何一個，
有什麼不同 之間的這個和這個？
>>鍵是字符串。
>>呀。所以，本 鍵是字符串，
和鍵實際上是 在這兩種情況下的字符串
這就是那種一個愚蠢的
在我看來，歷史悠久的設計 每當你使用的決定
JSON，JavaScript的 對象符號，
這實質上是 的傳輸格式
用於發送數據的 通常在網絡
客戶端和服務器之間， 你需要記住的
這是不實際 有效的JSON，這是1
這些FYIs的，除非你曾經 爆炸你的頭撞牆
幾分鐘沒有很好 因此，它不是有效的JSON
因為密鑰是 沒有實際引用。
JSON白痴要求 按鍵不僅被引用，
但是，他們受到雙重引述， 單引號是不夠的。
因此，愚蠢的小事情 而更多的是一種有趣的事實
對於今天的目的，但這種 也將是有效的JavaScript
它只是不 - 的 反之則不然。
好的。
所以，我們會看到很多 多的那個。
好的。
所以，這是JavaScript的 語法可能相當
熟悉的，任你誰擁有 從來沒有使用JavaScript的前
它不是從PHP一個巨大的飛躍 或幾乎所有的程序語言
你可能已經使用。
所以，今天我們將重點放在 有趣的方面
JavaScript的特別 在沒有JS的上下文
但不排他地，因為 到現在為止你可能，
如果您使用的Javascript， 在瀏覽器內使用它。
所以，沒有JS是一個環境 然後在一點點是怎麼回事
讓我們來訪問 JavaScript代碼的客戶端 -
服務器端但首先， 讓我們一起來看看
的東西，這是一個 多一點客戶端。
所以，我已經走了的，這是 在課程網站鏈接，
如果你想一起玩， 有兩個子目錄
在今天的郵編稱為 來源釘拉鍊的網站上
而這些都只是 舉幾個例子追憶
的東西，你可能已經看到 我有點前和他們建立
從簡單到稍 更複雜的挑逗
出的一些特點 JavaScript的。
所以，讓我們繼續前進，並採取 看看比如這個。
所以，可悲的是閃爍的標籤是 幾年前殺害了
結合的方式已經得到了 漂亮，漂亮
及閃爍標籤是字面上 開放式托架閃爍右方括號
它的排序沒有 再與我們聯繫。
但是，我們仍然可以復活 這個想法的標籤由正中下懷
的思考它 從邏輯上講，你怎麼去
有關使像 這直觀地閃爍？
假設你知道一點點 JavaScript的位和或CSS
在這一點上，它是 OK，如果你不這樣做。
>>設置超時和隱藏 它再經過我將它標記
並再次顯示它。
>>是的，完美的。
排序這是程序設計101，
你將如何實現 這樣的視覺效果？
好吧，你不知何故 要顯示的東西
然後隱藏著什麼，秀 什麼，隱藏著什麼
和喬納森建議 使用某種超時，
某種時間表，你可​​以做 這個反复無需
使用循環或 類似的東西。
所以，讓我進入閃爍 - 0.html
讓我縮 字體一點點
使更多的這種配合。
讓我們一起來看看 什麼是怎麼回事。
所以，首先， 注意到在身體
此頁面是超級 簡單，主體的內側
頁面只是一個div。
我任意給定 問候語的ID
並且可以是任何 只要它的獨特
然後我只是有一些 簡單的文字，你好世界。
所以，如果我現在向上滾動， 注意到一些蓬鬆的造型。
所以，我說，尖銳 問候語，這你也知道
在CSS中只是意味著唯一 識別元素
與問候的想法，
字體大小隨意去 是這樣的，保證金及文字對齊。
所以，無趣 美學細節
大致居中的文本。
因此，有趣的部分是 在這裡腳本標記了
我碰巧裡面放 頁面的頭部。
所以，we'll - 你可以做 這在任何數量的方法
我們會看到一些 同樣的程序反复
但是讓我們從頂部開始。
所以，我宣布一個 函數調用眨眼
顯然它使用此 內建的DOM方法稱為
通過getElementById這也許是 更強大的方法之一
你得到的開箱 用JavaScript找
“問候”不必 是雙引號，就像是
在HTML或者是 是精做久
因為你的曲風 一致的，這些天我敢說
許多人使用Java， 單引號在JavaScript中，
在HTML中的雙引號，但 它其實並不重要
只要你是一致的。
所以，在這裡，如果你不熟悉， 實際上你可以訪問
用JavaScript的CSS 上的元素屬性。
所以，請注意，我已經 聲明呼籲格的變量
和內部存儲 該變量的
引用的任何 該DOM元素是。
所以，如果你覺得回到CS50或 在你以為任何類別
關於樹結構和 DOM，文檔對象模型，
這僅僅是一個參考 在一個樹中的一個節點，
表示此頁
如果div.style.visibility 屬性等於，等於，等於，
隱藏的，然後我就 要切換它
喬納森提議 否則，我想
切換它交給隱藏。
現在，如在一側，所以 三重等於在那裡？
或者什麼是對 雙等號？
>>完全等同。
>>對不起。
>>完全等同。
所以，這是身份的運營商
其中由你檢查不 該變量的唯一值
作為一個平等的，平等的意識 而且它的類型。
所以，儘管我們還沒有 指定此不遠的任何數據
類型中的任何變量 此或任何幻燈片，
有相關聯的類型 以該字符串隱藏
與價值，以及隱藏 那是當然的字符串。
所以，在這種情況下，它 其實並不重要
因為沒有辦法， 我們要混為一談字符串
“隱性”與 一些其他值
但是這往往是一個很好的 習慣，我會告訴他要
到使用相等，相等時，
等號一般 一件好事。
它將使你的代碼 無論是在PHP的更強大，但
而在JavaScript 因為你會遇到
為偶爾的角落案件 其中值可以是零
你正在檢查和 零可以用false來混為一談
或可能是沒有和在PHP中，
使用Javascript也可以有多個 假值，其中零
與假，null和undefined 都可以解決隱
為false。
但如果你真的想要 檢查特定的值
像零，數，或 假布爾那麼你有
使用此身份運營商。
因此，它可能發生在得到 成反正即使在這裡，
它是那種毫無意義的 因為我們知道，我們正在檢查
為一個字符串值，它的 不會是別的。
所以，這裡的神奇的話，如果我 這裡向下滾動到這條線，
顯然，建 到窗口對象
這也是一個特徵 您可以訪問瀏覽器
這個超級全局 對象調用窗口，
那裡面是 一些功能，
如果其中一塊的 設置間隔
它需要明顯 什麼樣的參數？
是啊。
>>函數調用和時間。
>>好。因此，函數 呼叫和時間
所以特別是 引用一個函數，
一個指針指向一個函數 在某種意義上
這就是功能 這是怎麼回事
要得到執行的每一個數字 毫秒，在這種情況下，
這是每500毫秒。
所以，它是誘導的一種方式 有效和無限循環
不使用迭代，但 而不是告訴的JavaScript
在發動機內 瀏覽器
要做到這一點每500 毫秒或接近
到500毫秒，因為它可以，
事實證明， 引擎蓋下，
有什麼所謂的事件 循環，我們會回到這個
在節點JS的背景下 只是不斷樣
坐在那裡，紡紗，中 等待工作要做
並盡快實現，
500毫秒已通過 眨眼將得到再次調用
一次又一次的 旁邊的任何其他工作
這需要完成。
那麼，我們能改善嗎？
好吧，讓我打開 高達閃爍 - 1.HTML
並證明閃爍，1.HTML
作為美學 完全相同的。
那麼，有什麼可以改善我們在這裡？
好了，請注意，它 是那種無用
定義一個調用的函數 眨眼因為多少
在多少地方沒有我 調用函數眨眼？
>>只來過一次。
>>所以，之一。
所以，這是不壞，中 事實上，它可能是很
直線前進。
我定義了一個函數眨眼，我 通過的方式調用一個函數眨眼
這個參數的， 但在技術上，
有沒有理由 它與一個共同的範例
在JavaScript中是實際 使用lambda函數
你也許記得從 51或匿名函數
在那裡，如果你不需要 供的功能的名稱，
如果你只是調用它 當然在一個地方，
何苦弄亂你的代碼， 混亂的程序員的頭腦
和你的名字空間 真正與符號
你真的不 需要關心。
因此，在這個版本這裡，
請注意，我打電話 window.SetInterval直接
在最頂部我 script標籤，然後我傳遞
在一個無名的函數 不帶參數
這就是完美 細，然後身體
該函數的出現是 相同的是什麼東西之前，
而唯一句法 現在的區別是
這兒旁邊的500。
我關閉了身體 該函數的
然後我說 執行，以前的代碼，
每500毫秒。
所以，很輕微的變化
但對什麼是一步 可能是一個更優雅
實現這一點。
所以，讓我們這一個 進一步加強，如果我現在去
到眨眼2，你會 看到一個公共庫，
它的作用是將
是完全無關緊要的 美觀，但如果我們去
分為兩個版本，在這裡，通知 ，在我的頭頂，
我已經包括了 最新版本的jQuery。
然後，到這裡， 我剛擦洗
了代碼一點點，這是 不會是一個有趣的世界
繼續使用 原生DOM函數
和排序原始的JavaScript。
事實上，JQuery的，你可以 知道已經變得如此受歡迎
大多數人只是 衝突的jQuery用JavaScript
但真的只是一個夜宵 寫有用的庫
一個叫約翰的同胞 Resig的和別人起
有只是讓一 很多繁瑣的事情
在JavaScript中更容易 更簡潔。
所以，在這種情況 這裡是怎麼回事？
所以，我有這個樣子的 一個美元符號，更是上
在短短的片刻，然後 這是一個CSS選擇器。
所以，這是非常相似 精神，我以前做過，
但是這一次，我 從字面上使用散列標籤
以指示一個獨特 標識符，稱為問候
然後明顯 。CSS是內置的方法
在為任何對象 是，我剛剛創建
和我檢查的價值 知名度的關鍵。
如果該鍵的值 等於，等於，等於，隱藏，
然後我要切換它和 我要切換這一次
通過使用相同的方法 這顯然是超載
在於，它具有檢測 兩個不同的簽名，
1只有一個參數和 一拖二的參數，
其中所述第二 是二傳手，
其中前者是 一個getter可以這麼說。
如果好奇，如果你願意 從來沒有真正看了這個，
如果我們去jquery.css希望 頂擊的確是這樣
你可以看到一個更 正式的解釋
我們只是用這個， 。與CSS屬性名
然後二傳手是點的CSS
一個屬性名稱 和一個值。
所以，稍微清洗劑，但 這裡要注意圖案的排序
在每次迭代 這段代碼的，
樣的，我們正在做這 更嚴格和更嚴格和更嚴格的
並說有更好的設計
因為我們使用的是一個人 這是消除別人的代碼
一些複雜性。
所以，現在讓我們 這個就更簡單了。
而事實上，如果我刪除所有的 引號，你會看到剛才的所有
您將看到如何評論 簡單的這已經得到。
一個區別 這裡當然是
我使用一個切換 方法，該方法還附帶內置
在jQuery的，這只是
因為別人 寫的代碼
實際切換 的可見性設置
任何DOM元素 您發送它。
因此，越來越好。
因此，這是一種圖案，
儘管這是一個夜宵 簡單的例子和排序
愚蠢的淨影響 是閃爍的一段文字，
它是一種思想 過程中，你應該想想 -
可以考慮不 一定的第一
被動寫作的東西 為即將到來的項目
但可以肯定，你遍歷 與您的顧問或與我
和您的團隊會議或您 只是檢查你的隊友代碼
關於緊縮 的事情了，對不對？
畢竟，他們是少 -
代碼行數更少 你最終有
在理論上，更少的錯誤你 有可能被邀請
因為有簡單 更少的代碼亂了。
好的。
因此，一對夫婦的外賣店。
lambda函數， 匿名函數，
其中許多你的 以前見過
然後還只是收緊 東西帶圖書館
像jQuery在這 特殊情況。
好的。
有問題嗎？
讓我們做一個其他 這裡客戶端方面，
在形式上為零，我們有 這種淨效應。
超級簡單的形式，顯然 如果我嘗試點擊這裡註冊，
最初它告訴我，你是 註冊好了，不是真的。
那麼，這是為什麼？
那麼，這裡的形式，0.html 非常少的代碼，
沒有任何的JavaScript和 它是完全假的排序
的形式，因為行動 值是registered.html
這意味著不管是什麼 I型成這種形式，
它在哪兒去 在服務器上發送的？
是啊。因此，要registered.html 這顯然是一個HTML文件
它是靜態的，因此 文件，該文件沒有辦法
採取用戶輸入假設 沒有JavaScript代碼
嵌在它那 尋找在URL中
所以這完全是一個空操作，並 沒有什麼事情發生
與提交的數據，但 你可以看到結構
一個相當簡單的HTML5表單
有幾個密碼， 幾個輸入類型。
所以，讓我們現在實際上 添加一些錯誤檢查
看看我們如何 改善這一點。
所以，這裡是有點差的 實現此人的方式
和它的形式的 代碼討厭大塊。
因此，首先讓我們來滾動 下至底部
看看有什麼相同 這有什麼不同。
唯一不同的 現在這間
和以前的版本是 我已經給了形式和ID
的“註冊”可能 被任何我想要的
但它的意思是唯一 識別甚至不
絕對必要的，因為如果一個 頁面只有一個表單我肯定
可以與一個發現它 jQuery的選擇方法。
但這種方式只是讓 它更具有確定性。
所以，如果我現在去到我的腳本 標籤，注意下面，
在window.onload等號 一個匿名函數。
那麼，這是什麼做的？
所以，你可能還記得，在 客戶端編程 -
而JavaScript的HTML頁面 有各種各樣的事件相關聯
與元素，點擊 並提交和聚焦
以及模糊和其他這樣的 可能發生的事件
作為一個典型的用戶 與頁面交互，
在window.onload做什麼它說。
窗戶上的整個裝載
所以一旦所有圖像已經 一旦下載的所有文件
被下載一次 頁面已經加載，
做下面的代碼， 請注意，如果我切換到底部
這種方法的，請注意 沒有括號
大括號後 這是說
我不是在執行 此功能在這裡現在，
瀏覽器將要執行 對我來說，當它已經確定
該頁面已加載。
那麼，讓我們來看看我們做了什麼，
的document.getElementById 註冊
使剛剛給我 的參考節點
在樹的都有 註冊的ID。
而現在，我要 註冊另一個事件處理程序
通過做form.onsubmit得到 這個匿名函數
這意味著以下 代碼應該執行時
該表單被提交。
現在，大部分這只是 有點無聊的邏輯。
因此，如果該值 在表單中email字段是
“沒有”，那麼你必須 提供您的電子郵件地址，
你罵與用戶 提醒，然後返回false。
然後，我有一個 一堆其他的檢查，
輸入密碼的支票，
在檢查該 密碼是相同的，
支票如果協議 複選框被選中或不
我只是罵 用戶如果任何
這些測試的真正失敗。
因此，這裡是一個例子，即使 雖然這是一個有點做作
在這裡，我使用的是事實 等於，等於，等於，
意味著用戶 不能試圖欺騙我
通過鍵入什麼樣的價值。
或者更確切地說，我是真的 檢查是否存在
空字符串，則用戶 還沒有鍵入任何事情。
如果用戶輸入的 在字面上零，
“零”的潛在可能 混淆空字符串。
我說這是排序 無意義這裡
因為很明顯，甚至為零 不是一個電子郵件地址。
但是，如果這是一個更 就像一個文本字段通用字段
或一個名稱或描述或 你要珍惜的東西
它不一定 語法上有
是一個電子郵件地址，用戶 可以鍵入類似零
並再次角落的情況，但是這 為什麼通常檢查類型是
一個有用的東西。
你真正檢查 用戶已鍵入的任何
到該字段。
那麼，會發生什麼，如果沒有 這些測試失敗，那麼，
返回true內 事件處理程序的
喜歡的onsubmit只是意味著鬆懈 原來的行為實際上
傳播，因此 表格會得到提交。
這就是為什麼當我終於 單擊了提交之前，我有
通過對register.html和 如果我現在要做的是，通知，
我被罵，如果我不 提供一個電子郵件地址
我可以輸入 malan@harvard.edu，
深紅[拼音] 緋紅，檢查框，
現在註冊並 它告訴我，再一次，
您已註冊 或不是真的。
好的。
所以，讓我們清理它只是一個 點點，然後過渡
新更新的 服務器端的東西。
所以，如果我進入表單2.HTML， 注意到一些事情。
因此，一，我帶 jQuery的回混
所以又是 這個美元符號
現在我使用 一些jQuery的方法。
因此，首先，什麼是對 美元符號這
所以特別在這裡？
什麼是美元符號花邊 在大多數的任何jQuery代碼？
是啊。
[無聲備註]
確定。因此，美元符號功能 穿過DOM找
對於一些與此 尤其是CSS選擇器。
所以，真實的，但幾乎是太精確。
這是什麼情況 當你傳遞一個字符串
在這種情況下，但你不知道 總是要傳遞一個字符串。
事實上，典型的例子，很 這裡第一行是這不是一個
CSS選擇器，我傳遞 在一個lambda函數。
因此，更一般地 - 因此， 好答案，但過於精確。
更一般地，是什麼 美元符號代表什麼？
>>只是jQuery的。
>>呀。所以，只要jQuery的 或者它只是一個函數
有些傢伙年前 寫了和其他人有
因為增強，從字面上 默認情況下，被稱為 -
哎呀，就是所謂的jQuery。
它只是 - 它變成 出不像很多
語言的美元符號是 完全有效的符號使用
而在一個變量名
在PHP中的美元符號 顯然具有特殊的意義
但在JavaScript中一樣 某些語言中，美元符號
和下劃線等這樣的 特殊字符完全合法
在你自己的符號使用 名稱的變量。
所以，有人只是決定 那，你知道嗎？
這將是相當乏味的
讓整個世界 鍵入jQuery的所有的時間，
讓那種我廠生產的 股權地上，說：
“這個庫將 使用美元符號。“
而事實上，這 並提高風險
別人擅自 將要使用美元符號
他或她的庫，但 有辦法排序，以確保
當您使用美元 簽署它映射到的jQuery
因為你可以測試是否 它已經被分配
別的東西基本上。
好的。
所以，這是所有 是，沒有魔法。
它只是一個性感的期待 一塊語法是好的
快捷，方便輸入。
那麼，會發生什麼，當你 鍵入美元符號開括號
然後一個匿名函數。
嗯，事實證明，這是 實際上速記符號
文檔點 準備開括號。
因此，當辛西婭發現 早前我們已經找到了一個
角落的情況。
如果你只是在傳遞 lambda函數，
美元的影響 標誌是一個有點不同。
事實上，究竟發生了什麼 是它的等效於此，
傳遞一個參考 全球文檔對象
這是全球性的，就像 window對象是
那給你一些 特殊功能
影響整個頁面 或瀏覽器，它原來
出文件時， 你用jQuery把它包，
jQuery的基本實現， 哦，這是一個參考
該特殊文件的對象，
讓我現在就註冊一個 事件處理程序中調用準備
這是不是本機 的JavaScript或DOM相關。
準備是一個jQuery ，說的事情
當頁面加載 所有的HTML元素
但不一定是加載， 所有的CSS和圖像
和JavaScript文件和 Flash檔案和喜歡。
所以，這是一個前一步 負載然後繼續前進
並執行以下操作。
並利用對現成的上攻 意思是，你可以，你知道，
所有的元素的 在你的DOM，
所有的唯一標識 事情的ID，它們的存在甚至
如果頁，其內容 正在加載和加載
和你有一些 破碎的圖標了一會兒
或在白色背景的頁面。
是啊。
>>會發生什麼 如果[聽不清]？
>>完美的例子， 一個完美的問題。
所以，如果讓我們可以來看看 現在模擬這個。
那麼，讓我繼續和刪除 這兩條線在這裡，然後
而沒有修復 壓痕，讓我繼續前進
並刪除此這兒 - 哎呀，這一輪下來這裡。
現在，讓我到對面的 頁，轉到表單2.HTML和類型
在登記冊，似乎沒有什麼 發生，讓我們說，這是為什麼，
讓我們繼續前進，開 了Chrome的檢查，
打開控制台正好看到 如果有什麼事情發生在這裡，現在，
註冊，仍然一無所獲。
所以，代碼語法 精
所以我沒有看到任何 紅色的錯誤信息，
但顯然 是不是這樣？
沒有我的代碼是正確的， 它不工作，所以沒有
我的代碼似乎是 執行，所以這是為什麼？
那麼，JavaScript和瀏覽器 更普遍執行
一個網頁，上面的內容 至底部，左到右。
而問題是， 因為頂部
本頁面已經HTML然後頭 然後腳本然後另一個腳本，
這是要被執行 之前是什麼，甚至準備好了，
甚至存在於樹 頁面的表示。
窗體本身，甚至沒有 體存在於這一點。
因此，jQuery是足夠聰明 與它的錯誤檢查
如果不存在元素與 註冊的唯一ID，
它不會 拯救你
而只是引發一些控制台 錯誤，並打破了整個頁面，
它會默默地忽略 你，但原因是沒有
此代碼不斷被執行
因為當你有 註冊了這個提交處理程序，
沒有任何元素 將其附加到。
所以，這是形式的無操作那裡。
因此，通過指定代替， 等到年紀已加載
如果我們這樣做了的window.onload 這是有點事情
的做舊校方式 它還是性感jQuery的方式
這樣，我們就可以 告訴它等待，直到所有
這些HTML標籤有 被解析，所以即使
如果沒有加載的圖像，在 至少該節點在樹中，
然後JQuery的，可以確保 這一切都在那裡。
是啊。
[無聲備註]
是的，不錯，是絕對的。
因此，其它的解決方案 這一點，如果你沒有使用這個
或不記得 這個存在，
你可以絕對移動 這一切到底
所述網頁的，裡面的 身體仍然不過下面的表格
而這也將 解決這個問題。
這只是一般 認為不好的做法。
這是一個有點凌亂 並特別馬虎
如果你保持一切干擾 到頁面的底部，
尤其是當我保持 事情通過把所有簡單
我的代碼裡面 該HTML頁面的
當當然可以的 當然進入的習慣
分解出來的 到一個單獨的文件
在這一點上它只是好看
以集中 在頭文件中。
除非有你付出的代價
通過把JavaScript的 如CSS文件的另一個資產
在頁面的頭部， 什麼是您運行的風險？
>>較慢的頁面加載。
>>較慢的頁面加載，為什麼呢？
>>因為我們正在努力 載入所有的庫
前[聽不清]。
>>正是因為瀏覽器 閱讀代碼從上到下，
左到右，如果谷歌 分析速度慢
或jQuery的CDN緩慢 或者Facebook的API是慢
而該文件只是掛起 根據潛在
你如何加載該文件，該 整個頁面會顯示為掛起。
如果您看到此 很多坦白
在網站上他們有很多 低質量的廣告
在他們身上，我們只差一個緩慢或 被擊落的網站可以掛個網頁
對於一些不確定 秒數
終於等到了瀏覽器 希望超時上
然後告訴你 該頁面的其餘部分。
所以，如果你曾經使用過類似 Facebook的，像按鈕，
在您的網頁，讓我 看能不能找到這個
而不必在此登錄。
所以，如果你去到 Facebook的喜歡按鈕
並單擊一個get代碼，該死的，
讓我們看看如果我們能 找到該示例中，
肯定有人貼過這個。
[暫停]
我會放棄在幾 如果我們沒有看到這個秒。
Facebook的非同步 - 確定。
所以，這是代碼和除 他們最近已經改變了它
這實際上是Facebook的 建議您使用
加載他們的圖書館 居然提出
你把這個在 你的頁面的主體。
因此，Facebook的建議您 創造一種愚蠢的DIV
只是有一個像唯一的ID 這一點，然後有一個腳本標記
而這一切複雜性 基本上做以下
他們不使用任何的JQuery 因為他們不想
承擔其他任何 依賴關係，
讓我提出這 以上只是一點點。
因此，發現它們有一個 匿名函數在這裡，
更多該一會兒就好了，
然後，他們使用 document.createElement，
他們正在創建一個DOM元素， 這就像malloc的可以這麼說
其中標籤的類型為 腳本，它然後指定
該異步屬性 該標記是怎麼回事
是真實的，那麼你繼續前進 並弄清網址
Facebook的JavaScript的 應
而這僅僅是個奇特的方式
檢查應 它是人類基因組計劃或HDPS。
然後最後，你 通知一下Facebook的呢，
他們得到的DOM節點 有根的Facebook的ID
這是他們告訴 你把到頁面
然後他們附加子 因此，所有的這種效果是
排序的動態注入 一個新的腳本到您的網頁
作為DIV的孩子，你 插入那裡，以便休息
在頁面加載的快樂
然後實際上這個代碼 被異步加載。
所以，本質上後 其實我和遞延提
匿名函數，
這是什麼時髦 語法指的是在這裡
當我不僅功能 開括號，括號接近
然後大括號， 為什麼開括號在這裡
然後打開關閉，關閉 括號有，那是什麼做的？
>> [無聲]定義 然後執行？
>>沒錯，它的定義 函數，它是匿名
而僅僅是定義一個函數，
當然不執行 直到你調用它的函數
通過名稱，但當然這 是一個匿名函數
所以你不能把它 由名字，但你可以
在JavaScript執行的 匿名函數只
通過封裝整個事情 括號中為我們所做的
這個括號，這 括號這裡，然後固定
到函數結束 開括號，括號接近，
如果你不想要 它傳遞任何參數。
但是這似乎有點愚蠢，
就像為什麼這個附加 句法複雜性
大多數人似乎沒 認識到，有什麼價值
這些包裝的 三行代碼
在一個匿名函數 在這種方式。
是啊。
>>為了避免覆蓋一 在寶貴的[聽不清]。
>>沒錯，以避免 覆蓋一個變量
在現有的頁面，對不對？
Facebook是有點 擅自決定，
他們將使用 變量E，它很可能
您或任何人使用 Facebook的喜歡按鈕
或任何其他社會插頭
在具有可變 地方叫E.所以，
通過封裝所有 裡面的代碼
這個匿名函數，它們 基本上都有自己的適用範圍
不冒險重挫 任何現有的變量。
所以，這也實際上是 一個非常常見的範式，
寫作尤其是當 一個庫代碼
或者當你自己做不 想搞亂你的名字空間
與其他變量你 要的值來住
和死，一旦你退出 代碼塊，
這是一個很好的技術， 在JavaScript中。
好的。
所以，再回到這個例子 在這裡，所有的我們到底做了
這個例子是 只是清理的代碼。
因此，它仍然有一個整體 一堆開關，一大堆
這裡的條件，但 注意一點語法，
這個訪問的DOM節點 獨特的ID註冊，
空間的手段現在看的 的後代節點的，
找到它，如果它的類型 輸入，然後連
如果你還沒有見過這個 之前，你可能知道
這僅僅意味著找 它與輸入標籤，
輸入元件，其具有 的名稱與屬性值
電子郵件，然後讓 我揮揮手在一些
其餘的是不 所有的刺激
但真的只是jQuery的語法 對於相同的操作。
好的。
但是，什麼是不那麼重要 這裡是瀏覽器端的東西
而事實是，我們 有更清潔和更清潔的方式
實際製作 該代碼的工作。
好的。
有問題嗎？
[無聲備註]
確定。現在，有趣的部分。
所以，Node.js的，為什麼呢？
誰在乎呢？
你現在知道它怎麼樣？
Node.js的，為什麼呢？
亨利·[假設拼寫]。
[無聲備註]
電池復位？
什麼 - 這是一個 完美的懸崖衣架
後者今天的一半。
為什麼我們不走，並採取 這裡有5分鐘的休息時間，
有一個半糖 機那裡，如果你願意
沒有像一些糖果 把四分之一英寸