作者:empty 出版社:empty |
致谢
当前文档《你不懂JS:入门与进阶(You Dont Know JS) 》由进击的皇虫使用书栈(BookStack.CN)进行构建,生成于2019-09-15.获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知识准确、高效且有效地传递给每一个人。
你学的最后一个新东西是什么?
也许是一门外语, 比如意大利语或德语。或者可能是一种图像编辑器, 比如Photoshop。或者是一种烹饪技术, 木工活,日常锻炼。我想让你回忆一下你最终学会它时的感觉:醍酮灌顶的时刻。当事情从模糊不清变得蓄然开朗,正如你掌握了如何使用台锯,或者理解了法语中雄性名词和维性名词的区别。那种感觉怎么样?非常美妙,对吧?现在我想让你再多向前回忆一些,找到你学会新技能之前的那一刻。它感觉如何?可能有点儿吓人,也可能有点儿沮丧,是吧?在某一个时刻,我们都还不知道我们现在知道的事情,而这完全没问题;我们是从某处开始的。学习新的东西是一次激动人心的冒险,特被是当你想高效地学习它时。我教授过许多面向初学者的编程课程。上我课的学生们经常试着通过阅读博客或者拷贝粘贴代码来自学HTML或Javascript这样的东西, 但是他们都没能真正掌握能够使他们编写出自己渴望的结果的技能。而且, 因为他们没有真正把握关于编程的特定问题的内在和外在,他们不能编写强大的代码或调试自己的程序,因为他们没有真正地理解发生的事情。我总是相信教授我的课程的正确方法, 意味着我教授web标准, 语义标记, 良好注释的代码, 和其他的最佳实践。我使用一种彻底的方式讲解问题来阐明如何做与为何做,而非通过复制粘贴来倒腾代码。当你努力理解你的代码时,你就在创造更好的成果,并在编程上变得更加纯熟。代码不再仅仅是你的工作,而是你的作品。这就是为什么我喜爱入门与进阶。Kyle通过深入讲解语法和术语给我们带来了一个对JavaScript的全面介绍, 这本书不是浅尝辄止, 而是让我们真正地理解我们将要编写的东西。能够在你的网站中复制J Query代码段是不够的, 就像在Photoshop中仅仅学习如何打开, 关闭和保存一个文档是不够的一样。确实,只要我学会了一些关于编程的基本我就可以制造并分享一些我的设计,但是没有合理地了解这些工具和它们背后的机制, 我又如何定义一个网格, 或者建造一个合理的类型系统, 或者为Web优化图像呢?JavaScript也一样。不知道循环如何工作,或者如何定义变量,或者作用域是什么,我们将不能写出最好的代码。我们不想安于这种次优的状态一这毕竟是我们的作品你对JavaScript探索得越多, 它就变得越清晰。闭包, 对象, 和方法这样的词现在可能看起来与你还有些距离, 但是这本书将会帮你搞清楚这些术语。我希望你在开始阅读这本书时保持学会东西之前与之后的那两种感觉。它看起来可能有些令人望而却步,但是你已经拿起了这本书,你开启了一个了不起的旅程来磨练自己的知识。人门与进阶是我们理解编程之路的开端,享受醍醐灌顶的时刻吧!
第一章:进入编程欢迎来到你不懂JS(YD KJS) 系列入门与进阶是一个对几种编程基本概念的介绍一当然我们是特别倾向于JavaScript(经常略称为JS) 的一以及如何看待与理解本系列的其他书目。特别是如果你刚刚接触编程和/或JavaScript, 这本书将简要地索你需要什么来入门与进阶。这本书从很高的角度来解释编程的基本原则开始。它基本上假定你是在没有或很少的编程经验的情况下开始阅读YD KJS的, 而且你期待这些书可以透过JavaScript的镜头帮助你开启一条理解编程的道路。第一章应当作为一个快速的概览来阅读,它讲述为了进入编程你将想要多加学习和实践的东西。有许多其他精彩的编程介绍资源可以帮你在这个话题上走得更远,而且我鼓励你学习它们来作为这一章的补充,一旦你对一般的编程基础感到适应了, 第二章将指引你熟悉JavaScript风格的编程。第二章介绍了JavaScript是什么, 但是同样的, 它不是一个全面的指引一那是其他YD KJS书目的任务!如果你已经相当熟悉Javascript, 那么就首先看一下第三章作为YD KJS内容的简要一瞥, 然后一头扎进去吧!·
一个程序,经常被称为源代码或者只是代码,是一组告诉计算机要执行什么任务的特殊指令。代码通常保存在文本文件中, 虽然你也可以使用JavaScript在一个浏览器的开发者控制台中直接键入代码一我们一会儿就会讲解。合法的格式与指令的组合规则被称为一种计算机语言,有时被称作它的语法,这和英语教你如何拼写单词,和如何使用单词与标点创建合法的句子差不多是相同的。
但是一个具有争议的话题是,当你试着比较两个还不是相同类型的值时发生的事情,它需要隐含的强制转换。当比较字符串“99.99和数字99.99时,大多数人同意它们是等价的。但是他们不完全相同,不是吗?它们是相同的值的两种不同表现形式,两个不同的类型。你可以说它们是“宽松地等价 的,不是吗?为了在这些常见情况下帮助你, JavaScript有时会启动隐含的强制转换来把值转换为匹配的类型。所以如果你使用宽松等价操作符来进行“98.9000.90比较, JavaScript会将左手边的“09.98 转换为它的nur ber等价物99.99。所以比较就变成了99.99=99.99, 这当然是成立的。虽然隐含强制转换是为了帮助你而设计,但是它也可能把你搞糊涂,如果你没有花时间去学习控制它行为的规则。大多数开发者从没有这么做, 所以常见的感觉是隐含的强制转换是令人困惑的, 并且会产生意外的bug危害程序, 因此应当避免使用。有时它甚至被称为这种语言中的设计缺陷,然而, 隐含强制转换是一种可以被学习的机制, 而且是一种应当被所有想要认真对待JavaScript编程的人学习的机制。一旦你学习了这些规则,它不仅是消除了困惑,而且它实际上是你的程序变得更好!这种努力是值得的。注意:关于强制转换的更多信息,参见本书第二章和本系列类型与文法的第四章,本文档使用书栈(BookStack.CN) 构盘-15-手机店店员可能会写下一些笔记,记下新出的手机的特性或者他们公司推出的新套餐。这些笔记仅仅是给店员使用的一他们不是给顾客读的,不管怎样,通过记录下为什么和如何告诉顾客他应当说的东西,这些笔记帮助店员更好的工作。
关于编写代码你要学的最重要的课程之一,就是它不仅仅是写给计算机的。代码的每一个字节都和写给编译器一样,也是写给开发者的。你的计算机只关心机器码,一系列源自编译的0和1,你几乎可以写出无限多种可以产生相同0和1序列的代码。所以你对如何编写程序作出的决定很重要一不仅是对你,也对你的团队中的其他成员,甚至是你未来的自己。你不仅应当努力去编写可以正确工作的程序,而且应当努力编写检视起来有道理的程序,你可以通过给变量(见 变量 )和函数(见“函数”)起一个好名字在这条路上走很远。但另外一个重要的部分是代码注释。它们纯粹是为了向人类解释一些事情而在你的程序中插入的一点儿文本。解释器/编译器将总是忽略这些注释,关于什么是良好注释的代码有许多意见;我们不能真正地定义绝对统一的规则。但是一些意见和指导是十分有用的:·没有注释的代码是次优的,·过多的注释(比如,每行都有注释)可能是代码编写的很烂的标志,·注释应当解释为什么,而不是是什么。它们可以选择性地解释如何做,如果代码特别令人困惑的话,在JavaScript中, 有两种可能的注释类型:单行注释和多行注释考虑如下代码:如果你想在一个语句的正上方,或者甚至是在行的末尾加一个注释,的所有东西都将被视为注释(因此被编译器忽略),一直到行的末尾。在单行注释内部可以出现的内容没有限制。考虑:如果你想在注释中用好几行来解释一些事情,(*/多行注释就很合适。这是多行注释的一个常见用法:它还可以出现在一行中的任意位置,甚至是一行的中间,因为·/终结了它。例如:
目录
致谢
第一节:进入编程
第二:进入Java Smr ipt
第三章:进入Y DK IS
附录A:调
代码
亲白试
操作符
伯与类型
代码
变量
块儿
条件
循环
载
练习
复习
值与类型
量
条件
Str in模式
品数作为值
this标讯特
原型
旧的与新的
丰Java5oipt
复习
复习
作用域与闭包
this与对象原型
类型与文法
异步与性能
ES6与未来
..............