[音乐播放] 道格·劳埃德:所以现在我们老了 专业人士在网络编程,对不对? 我们已经介绍了几个 语言在各个视频。 现在,让我们做一个,JavaScript的。 首先是好消息,JavaScript的 是一个现代的编程 语言,就像PHP的 语法是从C派生, 所以这是一个良好的开端。 这是关于老的PHP,以及, 已经存在了大约20年。 有人发明了各地 同时为PHP。 和JavaScript实际上非常 基本用户体验 幅材。 实际上,有 三种语言,我 会说那种补 交互的用户体验 与网站,HTML, CSS和JavaScript。 所以,现在让我们讨论 关于JavaScript点点。 坏消息,虽然与JavaScript是 它设置了大量的规则本身, 然后它打破它们。 和JavaScript实际上可以 一种具有挑战性的学习, 因为它不像C和 PHP,这是非常结构化 并有非常严格的规则 对于事情如何工作的。 JavaScript有样 中变得如此灵活 也许事情不会 工作我们希望他们的方式, 也许我们真的不能学 我们的第一个编程语言 作为一个JavaScript。 因此,也许因为它不 为自己设定任何规则, 它并没有真正 强制良好的编码习惯。 但是,现在我们已经希望开发 一些良好的编码习惯, 所以我们可以开始掠夺 成JavaScript一点点。 编写JavaScript,类似于开放 与点C扩展C文件 或用点PHP扩展的PHP文件, 我们需要做的就是打开一个文件 用点js文件扩展名。 我们不需要有任何特别的 像我们做的分隔符在PHP中。 那种角度 支架问号PHP 我们已经习惯了从的样子, 我们告诉我们的浏览器,我们所拥有的 JavaScript是由包括 在一个HTML标签, 我们会看到一点点 如何做到这一点在短短的时刻。 其他的东西,它使 JavaScript的不同, 虽然,是它运行客户端。 综上所述,使用PHP回顾 我们永远无法真正看到 这强调了网站的PHP。 如果我们曾经看到的 网页源代码,我们只能 看到是HTML 由PHP产生。 但JavaScript的运行客户端。 您的JavaScript运行在您的计算机上。 这就是为什么你可以做 东西随意添加阻滞剂。 对? 广告阻塞通常是由完成 杀死所有的JavaScript 即在一个特定的网站上运行。 而且因为它必须 运行在您的计算机客户端, 你可以停止 JavaScript来完全运行。 这也意味着,当你使用 一个网站,包括了JavaScript, 你必须发送JavaScript源 代码作为你的HTTP响应的一部分 给客户端时,他们提出要求。 所以你可能不 要使用JavaScript 做真正敏感的事情 像传递信息 有关用户的密码备份和 第四,因为他们实际上是 将要接收所有的源代码, 不只是生成的HTML, 如将与发言权PHP的情况。 那么,如何才能包含JavaScript 在我们的HTML开始吗? 好了,类似CSS,实际上, 是那种我们在这里是如何做到这一点。 使用CSS我们的风格标签。 而那些风格标签内, 我们可以定义一个CSS样式表。 同样使用JavaScript 我们可以打开脚本标记, 另一个HTML标记我们没 在我们的HTML视频讲, 和JavaScript写的 这些脚本标记之间。 此外,虽然,如CSS,我们 可能CSS文件外链接 拉他们到我们的节目的方式。 使用CSS,我们也可以, 请问,使用JavaScript 我们也可以指定源 script标签的属性 在JavaScript链接 另外,让你不 必须在写 脚本标记之间,我们 可以使用链接它 该脚本标签。 而且,就像使用CSS那里的情况下, 我们建议它可能是 你最感兴趣写 在的情况下一个单独的文件你的CSS 你需要去改变它, 同样做我们推荐 你写你的 的JavaScript在不同的文件 并使用脚本标记源 属性,以配合您的JavaScript 到HTML,你的网页。 所以JavaScript变量,我们将 开始谈论的语法在这里。 而我们将通过 这种快速, 因为我们已经在PHP中做到了这一点,所以 这应该都非常熟悉。 因此,在JavaScript中的变量 非常类似于PHP变量。 有没有类型说明符,和 当你引入一个变量, 你用var关键字前缀它。 在PHP中,我们会做一些 这样,美元符号的X. 这就是我们指示 一个变量,但是没有,我们 不提的类型 变量的在所有。 我们会说,像 美元符号x等于44 PHP。 如果我们在做 在JavaScript中同样的事情, 我们会说无功x等于44。 所以,VAR是那种我们的方式 的引入的变量。 这或许更直观一点 不仅仅是美元符号的变量。 同样,由于没有 数据类型,我们可以这样做 与任何数据类型,字符串, 别的都将是无功。 条件语句,我们所有的 从C和PHP老朋友 仍然可用,所以我们有如果, 否则,如果,否则,开关和问题 标志结肠。 交换机剩余灵活,因为它 在PHP,但所有这些你 熟悉现在。 而同样与环路 的,而老歌, 做一段时间,并仍然提供给我们。 因此,我们已经知道了很多的 基本面基本的JavaScript类 仅仅凭借具有相当多的 现在关于C和PHP知识。 那么在JavaScript的功能呢? 那么,类似PHP每个功能 引入的功能关键字。 你说的功能,然后 开始定义功能。 什么是有一点不同 关于JavaScript的, 虽然是有能力 什么叫做匿名函数。 所以,你可以定义函数 不具有一个名字。 这是我们 还真没见过。 我们将真正使用的概念 匿名函数的 在这个待会儿 视频,因为它会 使背景下多一点意义 当我们看到它在特定情况下 我已经在这里制作。 但是,我们只是看看 在什么是简单的JavaScript 函数可能看起来像。 所以,我已经先行一步,并 打开了我的CS50的IDE 我已经运行的Apache 开始我的服务器上运行。 我有这个文件 打开名为Home.html中。 我会在一点点放大这里。 基本上,你可以看到 Home.html中只是一堆按钮。 而我在上面声称在这里 这是JavaScript部分 材料。 因此,有一堆按钮在这里, 但做这些按钮实际上呢? 好了,我们会去到我的IED, 而我的Home.html在这里打开。 在一开始, 这里的地方我链接 在我所有的JavaScript源文件。 对? 所以我有anonymous.js,clock.js, 我使用源属性 脚本标记的文件链接。 所以,我没有写任何 JavaScript的直接进入这个文件, 但我已经将所有的 JavaScript的我分开写。 如果我们这里,这个向下滚动 应该都是看起来有点熟悉 随着新的语法一点点。 我们在这里头标记 函数,然后一个按钮。 我有一个输入,这是一个类型的按钮, 显然,当我点击它, 我要调用一些 功能警报的日期。 这是那种我们如何可以混合起来 JavaScript和HTML一点点。 实际上,他们发挥得很好 在一起,所以很明显,当 我点击这个按钮,我要去 要调用一些功能警报的日期。 而同样是我所定义的行为 对于所有的其它按钮, 是home.html的页面上, 我们将回头率 这个视频的过程中。 但是,让我们回去了 这里就来看看 在clock.js,这是 JavaScript文件,我 写有这首功能 我们要看一看。 正如你所看到的,我开始我的JavaScript 用关键字功能功能, 我已经给这一个 的名字,这就是所谓的警报的日期。 里面还有,我显然是创建一个 所谓的当前日期新的局部变量。 而我要去分配 一个等于一个新的日期。 而且,我们可以进入很多 具体以什么日期是, 真正的JavaScript是这样 大不大,说我们不可能 面面俱到的一个视频。 但我只想说,这是怎么回事 回到我的数据项 封装当前日期和时间。 我存储在我是一个变量 显然要提醒当前日期。 那么,什么警报 当前日期是什么样子? 让我们来看看文件本身 备份过在浏览器窗口。 如此反复,这是按钮,我 已经绑,这个命名功能。 我点击它,并 看看它的所作所为,它提醒。 它突然出现了这样的框,告诉 我的当前时间为,显然 这是11月4日 10时43分43秒在上午。 如果我再次点击它,现在 这是一个几秒钟后,对不对? 所以,这就是这个函数。 当我点击这个按钮,它 弹出一个警告信息给我。 所以真的没有 太多的功能 这是从PHP不同, 新的语法,只是一点点 随使用JavaScript。 在JavaScript中数组是 很简单。 要声明一个数组,可以使用 方括号语法 我们很熟悉的PHP。 而类似PHP,我们 也可以混合数据类型。 所以这个数组,无论是 这些阵列的将 是完全合法的JavaScript。 一说是所有的整数,而另一个 混合起来不同的数据类型。 什么是非常不同的东西 在JavaScript中,有关系吗? 这是一个对象的概念。 因此,也许你听说过 面向对象编程。 我们不会做很多它的CS50, 但我们会做一点点 这里在JavaScript的上下文。 现在的JavaScript有能力 表现为一个面向对象的程序设计 语言,但它本身不是 完全面向对象的 编程语言。 而这又涉及 回到为什么我说,这 是非常具有挑战性的学习 JavaScript作为你的第一个程序 语言,因为它不 真正适合某个特定的模式。 C对另一方面是一个 函数式编程语言。 如果我们想,功能 那种大老板的人吧? 他们决定什么 发生一切。 我们要改变的变量, 我们调用函数。 我们做事的功能。 对象,而不是在一个 面向对象的语言, 对对象进行排序成为明星, 功能成为那种次要的。 但是,什么是对象,什么 是一个对象的这个概念? 那么,如果有帮助,认为 它在第一个排序 像C结构或结构 我们已经了解了。 在C语言中,一个结构包含 多个字段, 也许我们现在可能会开始 把这些字段属性。 但性能从来没有真正 站在自己的,对不对? 如果我定义了一个结构,汽车 像这样有以下两个 字段或属性,一个一个 对于汽车的年整 和另外10个字符 串为汽车的型号, 我可以说这样的事情, 我可以声明一个新变量 类型结构的车赫比。 然后,我能说些什么 像herbie.year等于1963, 和herbie.model等于甲壳虫。 没关系。 我使用的领域 结构的范围内, 但我永远只是 说这句话。 对? 我不能使用字段名 独立结构。 这有点一个根本的东西。 所以场是 根本,以C结构 非常相似的属性是 根本的JavaScript对象。 但是,是什么让他们 特别有趣 是,对象也可以具有什么 被称为方法,这是真正 只是一个花哨的词的功能, 是固有的对象为好。 所以这是一个函数,它只能是 所谓在对象的上下文中。 唯一定义一个对象 此函数将其内部, 如果你想想 结构,功能 这些内部定义的定义 结构的大括号内。 因此,它只能意味着什么 到的结构。 这就是那种我们正在做的 这里的对象和方法。 这基本上就像我们 定义一个函数,它 不仅使上感 特定的对象,因此我们 调用该对象的方法。 我们永远不能称之为 功能独立的对象, 就像我们不能说一年或模型 独立于C.结构体 因此,函数式编程 范式是这个样子。 功能,当你通过,则 在对象作为参数。 在面向对象的编程 语言类的这种变 翻转,我们会考虑 像这样,object.function。 因此,那种圆点 运营商再次暗示 它的某种属性 或对象本身的属性。 但是,这是一个对象 面向对象编程语言 可能会做,使功能 调用的方法,再一次,这 仅仅是一个特殊的词功能 所固有的对象。 这是什么 语法可能是什么样子。 因此,我们将开始看到一些 这在JavaScript的上下文。 你也可以考虑的对象 有点像一个关联数组, 这是我们很熟悉的PHP。 请记住一个关联数组允许 我们有键值对,而不是 具有索引0,一个,两个,三个, 所以像我们从C使用 阵列。 关联数组可以映射 即,如在PHP视频, 我们谈论 比萨饼的浇头。 因此,我们有一个数组 所谓的比萨饼,和我们 有奶酪是一个关键和$ 8.99是 值,然后香肠是一个关键的, $ 9.99加入是一个值,并依此类推。 因此,我们也可以思考的一个 对象排序的类似缔 数组。 所以这个语法在这里 将创建一个新的对象 叫赫比两个 它里面的属性。 年,其中被赋值为1963年, 和模型,其被分配的串 甲虫。 并注意在这里,我使用 单引号中的JavaScript。 您可以使用单或双引号 当你在谈论的字符串。 这只是传统 的情况下,大多数倍 当你编写JavaScript, 你只需要使用单引号。 但是,我可以在这里使用双引号,和 这将是完美的罚款以及。 所以,记得在 PHP,我们有这个想法 的每个回路,使我们 遍历所有键值 对关联的 阵列,因为我们 没有这种能力来遍历 通过0,一,二,三,四, 等等? JavaScript有非常类似的东西, 但它不叫for each循环, 它被称为在循环。 所以,如果我对我说喜欢 这一点,在对象VAR键, 这就是那种类似说法 对每个东西的东西。 但是,所有我在这里做的是迭代 通过我的所有对象的键。 而卷曲的内 牙套那里,我会 使用对象的方括号键指 以在该键位置的值。 可替代地,有 即使是另一种方法。 如果我只关心 值,我可以说对象的关键, 和刚内使用密钥。 因此,对于在对象VAR键,我有 使用对象的方括号 关键的内循环。 对于对象的VAR钥匙,我可以 只使用键循环内, 因为我只是专 说起那里的价值。 因此,让我们也许需要 看差 只是为了迅速告诉你 4之间的差 在和用于治疗与一个非常具体的 阵,我们这里有,周阵列。 所以,我必须找到一个新的数组 我充满了七弦, 星期一星期二星期三, 周四,周五,周六,周日。 我想现在迭代 在这个数组中, 打印出的某些信息。 如果我使用一个在循环 打印出的信息, 你觉得我会得到什么? 好吧,让我们一起来看看。 而之前我们跳过去 我的浏览器窗口, 只知道 的console.log几分之一 这样做在JavaScript中打印的F方式。 但是,什么是控制台? 好了,这就是我们要去 去看看现在。 好了,我们又回到这里 在我的浏览器窗口, 我要去开 我的开发工具。 再次,我只是打F12 开放的开发工具。 并注意在此间举行的 上面我选择控制台。 因此,这是概念 开发者控制台, 它将使我们能够 打印出来的信息, 有点像终端,但 因为你会看到一个小后, 我们也可以在输入信息 与我们的网页交互。 我会在一点点放大这里, 而我要现在在测试点击的。 而四test--我不会 告诉你它的代码,现在, 但你会得到它,如果你 下载源代码 与此相关联的video-- 只是,对于在循环 我们看到的只是一个 第二以前的幻灯片。 所以,我要点击那 按钮,在这里, 这里就是已经打印出来了 控制台,0,一,二,三,四,五, 六。 我没有打印出的信息 这些阵列单元内, 因为我用在循环中。 和循环的身体内部,我 刚刚打印出来的关键不反对键。 但是,如果我现在很清楚我的控制台,我 切换到用于测试的,和四个测试的 我说我使用的循环 而不是打印出来的关键, 如果我点击了,现在我得到的 我的对象里面实际元素 还是我在这种情况下阵。 我的工作日阵列。 我打印出来周一, 周二周三。 所以这之间的差 一个在循环,打印出 只是,如果你只需要使用钥匙的钥匙 所述循环体的内部, 和一个for循环,其中打印 出来的数值,如果你只使用 关键的循环体内部。 好吧,我们现在怎么办开始 连接字符串,也许混淆 插值一些变量 就像我们能够做到在PHP? 好了,我们非常熟悉的 这个从PHP。 这是我们如何使用做 点运算符来连接字符串。 在JavaScript中,不过, 我们实际使用的东西 所谓的加号,这 也许是更多的哪怕是一点点 直观的,对不对? 我们加入一些 串在一起。 因此,让我们头回 过去看看这是什么 将打印,如果我们想要打印出来 所有在一周阵列的信息。 好了,所以在这里 在字符串连接, 我有两个选择,串楼 V1,然后串建设V2。 我们会看到为什么我们 需要在第二V 2。 但是,我要请点击 串建筑V1,这 是我们的代码 只是走一看, 在与console.log的所有优点之一。 如果让这种打印的看 出我们所期望的。 星期一是一周中的天数01, 周二是一周中的天数11。 好吧,我试图 这样做有获得 它打印出周一的日数 之一,周二当天排名第二。 但似乎像我 总是打印出的。 好了,这是为什么? 嗯,事实证明,再看看 在这个代码小片段在这里。 请注意,我们使用了加 操作者在两个不同的上下文。 所以这里的地方也许事情 我们已经那种一直在说, 哦,它是如此之大。 我们不与数据类型的处理了。 但是,这里的地方的事实 我们失去的数据类型 实际上有点 对我们的一个问题。 现在,再加上运营商是用来 连接字符串,并添加号码 同时,JavaScript有 尽最大的猜测 至于什么我希望它为我做。 在这种情况下,它猜错了。 它只是级联天,这将是 0个,一个,两个,三个,四个,五个,或六个, 然后它只是串联 这一点,然后再连接到之一。 它实际上并没有把它们相加。 所以这些语言, PHP和JavaScript, 这抽离 这个概念的类型, 你没有对付它了。 他们还有引擎盖下的类型。 我们可以在情况 这样,充分利用了这一事实 说什么 像这也许,这 告诉JavaScript中,由 这样,把它当作一个整数, 不把它作为一个字符串,即使 虽然我们串混合在一起 和整数这里。 这只是其中的一件事情 它看起来如此之大的情况下 我们不必 处理类型了, 但有时你会 碰到这种情况 完全一样,其中的事实是 你没有超过类型的控制 可以对你适得其反 如果你不小心。 所以,如果我们弹回过来IDE,我 又要清除我的控制台, 我要去点击字符串 建设二版,这 在这里我使用的解析INT功能。 现在,它的打印出 我很期待的信息。 周一的天数之一,星期二 是日数二,依此类推。 因此,让我们来谈谈功能了。 我答应大家会谈论匿名 功能,现在的上下文为该 终于到了。 因此,在这样做之前,我们再谈 有关数组只是第二次。 所以阵列是一个特殊的 情况下,对象的。 事实上,一切都在 JavaScript是实际上的对象。 因此,功能是 对象的特殊情况, 整数是一个特殊的 情况下,对象的, 但阵列专 有许多方法。 请记住,因为他们的对象, 它们可以有属性和方法。 它们具有许多方法,这些方法 可以应用到那些对象。 有一个叫方法 大小,array.size, 这将返回到 你,你可能期望 在您的阵列元素的数量。 排序array.pop,像 我们突然离开的想法 一摞,如果你还记得 从我们的堆栈视频, 删除该数组中的最后一个元素。 Array.push将一个新元素 到数组的末尾。 array.shift是有点 喜欢DQ,它拼接出 数组的第一个元素。 但也有另一种特殊 阵列的方法称为地图。 这是排序的 有趣的概念。 那么,什么是地图的想法? 你会真切地看到这 在其他几种语言, 我们不是在谈论一个 排序制图师绘制在这里, 我们谈论的是一个映射功能。 在上下文我们 这里讲的,地图 是一种特殊的操作,我们 可以在阵列上执行 以应用的特定功能 该数组的每个元素。 所以我们会说 这种情况下,也许array.map, 而在它的内部,我们传递 进入地图,我们希望有一个功能 要施加到每一个元素。 所以,这有点类似于使用 一个循环的每个元素遍历 和应用特定 功能是每一个元素, 只是JavaScript的有这个建于 概念可以应用的映射。 这是一个很大的背景下 谈论一个匿名函数。 所以我们可以说,我们有 这个整数数组。 这就是所谓的NUMS,并且它有5 东西在里面,一,二,三,四, 五。 现在,我要地图的一些 功能上这个数组。 我想有一个函数应用 到阵列的每个元素。 好吧,让我们说,我想 要做的只是加倍的所有元素。 我能做的只是使用一个循环 为变种我等于0,I小于 或等于4,我加,再加上,并 再翻一番每一个号码。 但我也可以做这样的事情。 我可以说NUMS前身 一二三四五, 不过,现在,我想你 应用映射到这个数组 在这里我想你 翻番每一个数字。 而这正是 这里发生了什么。 但是请注意什么,我路过 在作为参数映射。 这是一个匿名函数。 并注意我没有给 此函数的名称, 我只给它一个参数列表。 所以这是一个例子 一个匿名函数。 我们通常将永远不会调用此 地图的上下文之外的功能。 我们将其定义为一个参数 映射,所以我们真的不 需要有一个名字为它,如果 在乎唯一的事情就是地图 和它的正确定义 地图在里面。 所以这是一个匿名函数。 我们一直没能 预先这样做。 地图部分功能 接受一个参数,NUM, 而该函数的作用是什么 在返回NUM的2倍。 所以在此之后 测绘中得到应用, 这是现在什么NUMS长相 像,二,四,六,八,十。 我们会突然到我 浏览器窗口和公正 看看这个 真的很快为好。 所以,我在这里有另一个按钮 在我的主页称为双。 当我点击加倍,它告诉 我之前是一,二,三,四, 后五二,四,六,八,10。 如果我回去,然后单击双 再次,二,四,六,八,十。 再经过,四个, 8,12,16,然后20。 而我是什么在这个功能做什么? 那么,如果我们只是弹出交给IDE和 我拉起我的匿名函数,在这里 在七号线到13,我 做一点点花哨的工作在这里, 但我只是打印出 什么是当前的数组中开始。 然后在线路16,17, 18,还有我的地图。 这是我在应用此增加一倍 功能到每一个元素。 再远一点下来, 我只是在做同样的事情 我在做之前,但现在我 打印出数组的内容 之后。 但是,所有我所做的是 只需使用一个匿名函数 到在整个阵列映射。 因此,多一个很大的话题谈谈 JavaScript是一个事件的概念。 事件是什么,正好 当用户与您的网络交互 页面,所以也许他们点击的东西, 或者在页面加载完成, 或者他们已经感动 他们的鼠标的东西, 或者他们已经输入的东西 在输入字段。 所有这些事情都是事件 这是发生在我们的网页上。 和JavaScript有 功能支持的时候 调用的事件处理程序, 是一个回调函数 响应的HTML事件。 什么是一个回调函数? 那么,它通常只是一个 名匿名函数。 这是一个函数, 响应一个事件。 而这正是我们来到了 结合某些功能的想法 到一个特定的HTML属性。 大多数HTML元素有 对于属性的支持 我们没有谈论的HTML 这样的事情在点击视频 或悬停或负载, 所有这些事件 然后你可以写函数 该处理这些事件 当这些事件 出现在网页上。 所以,也许你的HTML 看起来是这样的。 我有两个按钮在这里, 按钮一个,两个按钮, 这里我有现在 定义什么都没有, 但是,这是其中所述属性 点击显然是我的HTML标记的一部分。 所以很明显,当我定义什么是 该属性中的想法, 这将是一些JavaScript 函数,响应该事件 想必点击的 按钮一键两种。 有什么样的很酷,这是我们 可以写一个通用的事件处理程序。 而这个事件处理程序将 创建事件对象。 而事件对象会告诉我们 这两个按钮被点击。 现在怎么运作的? 那么,它可能会是这个样子。 因此,我们将首先定义我们的按钮 不得不回调一个响应 函数将被调用 单击该按钮时, 我们称之为事件警报名。 并注意在这两种情况下,我们是 通过本次活动参数。 因此,我们调用这个函数 或者这个功能时, 由事件发生触发, 它会创建这个事件对象 并把它作为一个 参数警报名称。 而该事件的对象是 要包含的信息 哪个按钮被点击。 它是如何做到这一点? 那么,它可能会是这个样子。 所以,现在在我的独立 JavaScript文件,我可能 要找到这个 功能警报名称, 再次接受事件参数。 然后这里是我检测 该按钮被触发, VAR触发等于事件 点源元素。 那是什么创建的源 这是通过本次活动的对象? 是不是按钮一次,抑或是两个按钮? 然后,在这里我做的是 打印出trigger.innerhtml。 那么,在这种情况下,在该 的背景下,trigger.innerhtml 只是写了什么按钮。 碰巧,如果我们跳 回一秒钟,那会 是什么在这些按钮标记之间。 这将是按钮的一个或两个按钮。 让我们来看看 如何事件处理程序会 看,如果我们有它运行在实践中。 所以首先,你 开辟了events.js, 这是JavaScript文件,其中 我已经定义了这个功能。 正如你所看到的,这是 几乎什么 我们只是在一秒钟前看到的幻灯片。 我会去到了 我们一直在使用的主页。 而我这里按钮 一个,两个按钮。 我会按一下按钮之一。 你点击的按钮之一,如果你 可以看到这里的戒备。 好。 点击两个按钮,您 点击一个按钮两种。 因此,这两个按钮具有 同样的函数调用,对不对? 他们都警觉名 事件,但此事件对象 这被创建时,我们点击 它告诉我们哪个按钮被点击。 我们没有写两个独立 功能或处理有 通过任何其他信息。 我们只是依靠 什么样的JavaScript会 做对我们来说,这是创建 排序代表我们的活动对象。 还有很多事情需要JavaScript的比 我们已经讨论了在这段视频中, 但有这些 根本应该让你 相当长的方式来 学习一切你 需要了解这一 有趣的语言。 我是道格·劳埃德。 这是CS50。