>>所有权利。
因此，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分钟的休息时间，
有一个半糖 机那里，如果你愿意
没有像一些糖果 把四分之一英寸