一个适合前端新手轻松上手的JavaScript教学

JavaScript 是一门编程语言,可为网站添加交互功能(例如:游戏、动态样式、动画以及在按下按钮或收到表单数据时做出的响应等)。本文介绍了 JavaScript 的精彩之处和主要用途。

JavaScript(缩写:JS)是一门完备的 动态编程语言)。当应用于HTML文档时,可为网站提供动态交互特性。由布兰登·艾克( Brendan Eich,Mozilla 项目、Mozilla 基金会和 Mozilla 公司的联合创始人)发明。

JavaScript 的应用场合极其广泛,简单到幻灯片、照片库、浮动布局和响应按钮点击,复杂到游戏、2D/3D 动画、大型数据库驱动程序等等。

JavaScript 相当简洁,却非常灵活。开发者们基于 JavaScript 核心编写了大量实用工具,可以使 开发工作事半功倍。其中包括:

1、浏览器应用程序接口(API)—— 浏览器内置的 API 提供了丰富的功能,比如:动态创建 HTML 和设置 CSS 样式、从用户的摄像头采集处理视频流、生成3D 图像与音频样本等等。

2、第三方 API —— 让开发者可以在自己的站点中整合其它内容提供者(Twitter、Facebook 等)提供的功能。

3、第三方框架和库 —— 用来快速构建网站和应用。

本节是一篇 JavaScript 简介,因此这个阶段不会对 JavaScript 语言和上述工具做过多的介绍。之后可以到 JavaScript 学习区 和 MDN 的其它地方学习更多细节。

下面对语言核心做一个不完整介绍,期间还可以接触到一些浏览器 API 特性。

读到这里你一定很激动,诚然 —— JavaScript 是最振奋人心的 Web 技术之一,而且在娴熟驾驭之后,你的网站在功能和创新力上将达到一个新的维度。

然而,JavaScript 比 HTML 和 CSS 学习起来更加复杂一点,所以必须一步一个脚印地学习。首先,来看看如何在页面中添加一些基本的信息 JavaScript 脚本来建造一个 “Hello world!” 示例

重要的是:如果你没有完成之前的课程实践,可联系我获取资料包继续跟着练习哦,如果你要实践,前两篇笔记就是html和css阶段的内容哦。

  1. 首先,打开你的测试站点,创建一个名为 scripts 的文件夹。然后在其中创建一个名为 main.js 的文件。
  2. 下一步,在index.html文件</body>标签前的新行添加以下代码。
  1. 与 CSS <link>的元素类似,它将** JavaScript**引入页面以作用于 HTML(以及 CSS 等页面上所有内容);
  2. 现在将以下代码添加到main.js文件中:
  1. 最后,保存HTMLJavaScript 文件,用浏览器打开 index.html。可以看到如下内容:

注:我们将 <script> 放在HTML文件的底部附近的原因是浏览器会按照代码在文件中的顺序加载 HTML。如果先加载的 JavaScript 期望修改其下方的 HTML,那么它可能由于 HTML 尚未被加载而失效。因此,将 JavaScript 代码放在 HTML页面的底部附近通常是最好的策略。

JavaScript 把页面的标题改成了 “Hello world!” 。首先用 querySelector() 函数获取标题的引用,并把它储存在 myHeading 变量中。这与 CSS 选择器的用法非常相像:若要对某个元素进行操作,首先得选择它。

之后,把 myHeading 变量的属性 textContent (标题内容)修改为 “Hello world!”

注:上面用到的两个函数都来自文档对象模型 (DOM) API, 均用于控制文档。

我们来学习一些 JavaScript 的核心特性,从而更好地理解它的运行机制。学习这些知识很有意义,因为这些原理普遍适用于所有编程语言,掌握好它们,可以做到融会贯通。

重要:学习本节时,请尝试将示例代码输入到 JavaScript 控制台里看看会发生什么。 JavaScript 控制台的更多信息请查看 浏览器开发者工具。

变量 (en-US) 是存储能量的容器。要声明一个变量,先输入关键字 let 或 var,然后输入合适的名称:

注:行末的分号表示当前语句结束,不过只有在单行内需要分割多条语句时,这个分号才是必须的。然而,一些人认为每条语句末尾加分号是一种好的风格。

注:几乎任何内容都可以作为变量名,但还是有一些限制(请参阅 变量命名规则)。如果你不确定,还可以 验证变量名 是否有效。

注:JavaScript 对大小写敏感,myVariable 和 myvariable 是不同的。如果代码出现问题了,先检查一下大小写!

注:想要了解更多关于 var 和 let 的不同点,可以参阅 var 与 let 的区别。

变量定义后可以进行赋值:

也可以将定义、赋值操作写在同一行:

可以直接通过变量名取得变量的值:

变量在赋值后是可以更改的:

注意变量可以有不同的 数据类型 :

那么变量有什么用呢?我们说,编程时它们无所不在。如果知道无法改变,那么就无法做任何动态的工作,比如发送个性化的问候,或是改变在图片库当前展示的图片。

类似于 CSS,JavaScript 中间可以添加注释。

如果注释只有一行,可以更简单地将注释放在两个斜杠之后,就像这样:

运算符 (en-US)是一类数学符号,可以根据两个值(或变量)产生结果。以下表格中介绍了一些最简单的运算符,可以在浏览器控制台里尝试一下后面的示例。

译注:这里说“根据两个值(或变量)产生结果”是不严谨的,计算两个变量的运算符称为“二元运算符”,还有一元运算符和三元运算符,下表中的“取非”就是一元运算符。

运算符种类远不止这些,不过目前上表已经够用了。完整列表请参阅 表达式和运算符。

注:不同类型数据之间的计算可能出现奇怪的结果,因此必须正确引用变量,才能得出预期结果。比如在控制台输入 \”35\” + \”25\”,为什么不能得到 60?因为引号将数字转换成了字符串,所以结果是连接两个字符串而不是把两个数字相加。输入 35 + 25 才能得到正确结果。

条件语句是一种代码结构,用来测试表达式的真假,并根据测试结果运行不同的代码。一个常用的条件语句是 if … else。下面是一个示例:

if ( … ) 中的表达式进行测试,用(上文所提到的)等于运算符来比较变量 iceCream 与字符串 \’chocolate\’ 是否相等。 如果返回 true,则运行第一个代码块;如果返回 false,则跳过第一块直接运行 else 之后的第二个代码块。

函数 用来封装可复用的功能。如果没有函数,一段特定的操作过程用几次就要重复写几次,而使用函数则只需写下函数名和一些简短的信息。之前已经涉及过一些函数,比如:

document.querySelector 和 alert 是浏览器内置的函数,随时可用。

如果代码中有一个类似变量名后加小括号 () 的东西,很可能就是一个函数。函数通常包括参数,参数中保存着一些必要的数据。它们位于括号内部,多个参数之间用逗号分开。

比如, alert() 函数在浏览器窗口内弹出一个警告框,还应为其提供一个字符串参数,以告诉它警告框里要显示的内容。

好消息是:人人都能定义自己的函数。下面的示例是为两个参数进行乘法运算的函数:

尝试在控制台运行这个函数,不妨多试几组参数,比如:

注:return语句告诉浏览器当前函数返回 result 变量。这是一点很有必要,因为函数内定义的变量只能在函数内使用。这叫做变量的 作用域。(详见 变量作用域。)

事件能为网页添加真实的交互能力。它可以捕捉浏览器操作并运行一些代码做为响应。最简单的事件是 点击事件,鼠标的点击操作会触发该事件。 可尝试将下面的代码输入到控制台,然后点击页面的任意位置:

Copy to Clipboard

将事件与元素绑定有许多方法。在这里选用了<html>元素,把一个匿名函数(就是没有命名的函数,这里的匿名函数包含单击鼠标时要运行的代码)赋值给了html的onclick (en-US) 属性。

请注意:

等价于

只是前者更简洁。

现在你已经具备了一些 JavaScript 基础,下面来为示例网页添加一些更酷的特性。

这里将用新的 DOM API 为网页添加另一张图片,并用 JavaScript 使图片在点击时进行切换。

  1. 首先,找到另一张你想要在你的页面上展示的图片,且尺寸与第一张图片尽可能相同。
  2. 将这张图片储存在你的images目录下。
  3. 将图片重命名为\’firefox2.png\’(去掉引号)。
  4. 打开main.js文件,输入下面的JavaScript 代码 ( 请删除刚才的 \”hello world\” 脚本):

5、保存所有文件并用浏览器打开 index.html 。点击图片可以发现它能够切换了!

这里首先把<img> 元素的引用存放在myImage变量里。然后将这个变量的onclick事件与一个匿名函数绑定。每次点击图片时:

  1. 获取这张图片的 src 属性值。
  2. 用一个条件句来判断src的值是否等于原始图像的路径:
    1. 如果是,则将 src 的值改为第二张图片的路径,并在 “ 内加载该图片。
    2. 如果不是(意味着它已经修改过), 则把 src 的值重新设置为原始图片的路径,即原始状态。

下面来添加另一段代码,在用户初次进入站点时将网页的标题改成一段个性化欢迎信息(即在标题中添加用户的名字)。名字信息会由 Web Storage API 保存下来,即使用户关闭页面之后再重新打开,仍可得到之前的信息。还会添加一个选项,可以根据需要改变用户名字以更新欢迎信息。

1、打开index.html, 在<script>标签添加以下代码,将在页面底部显示一个“切换用户”字样的按钮:

2、将以下 JavaScript 代码原封不动添加到main.js文件底部,将获取新按钮和标题的引用,并保存至变量中:

3、然后添加以下函数来设置个性化欢迎信息。(函数需要在调用后生效,下文中提供了两种对该函数的调用方式)

该函数首先调用了prompt()函数, 与alert()类似会弹出一个对话框。但是这里需要用户输入数据,并在确定后将数据存储在myName变量里。接下来将调用localStorageAPI ,它可以将数据存储在浏览器中供后续获取。这里用localStorage的setItem()函数来创建一个\’name\’数据项,并把myName变量复制给它。最后将textContent属性设置为一个欢迎字符串加上这个新设置的名字。

4、接下来,添加以下的if … else 块。我们可以称之为初始化代码,因为它在页面初次读取时进行构造工作:

5、Copy to Clipboard这里首次使用了取非运算符(逻辑非,用!表示)来检测\’name\’数据是否存在。若不存在,调用setUserName()创建。若存在(即用户上次访问时设置过),调用getItem()获取保存的名字,像上文的setUserName()那样设置textContent。

  1. 最后,为按钮设置 onclick 事件处理器。按钮按下时运行 setUserName() 函数。这样用户就可以通过按这个按钮来自由设置新名字了:

第一次访问网页时,页面将询问用户名并发出一段个性化的信息。可随时点击按钮来改变用户名 。告诉你一个额外的福利,因为用户名是保存在 localStorage 里的,网页关闭后也不会丢失,所以重新打开浏览器时所设置的名字信息将依然存在:)

运行示例代码,弹出输入用户名的对话框,试着按下 取消 按钮。此时标题会显示为 “跟着艾编程学习太有成就感了,null”。这是因为取消提示对话框后值将设置为 null,这是 JavaScript 中的一个特殊值,表示引用不存在。

也可以不输入任何名字直接按 确认,你的标题会显示为“跟着艾编程学习太有成就感了,”,原因么显而易见。要避免这些问题,应该更新 setUserName() 来检查用户是否输入了 null 或者空名字:

用人话说就是:如果 myName 没有值或值为 null,就再次从头运行setUserName()。如果有值(上面的表达式结果不为真),就把值存储到 localStorage 并且设置标题。

如果你按部就班完成本文的实践,那么最终可以得到以下页面

相关推荐:

小白如何快速入门JavaScript?6分钟带你看懂快速学习的六大步骤

JavaScript(通常缩写为JS)是一种解释型、面向对象、多范式的高级编程语言。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。

JavaScript是世界上最流行的脚本语言,因为它很容易上手,而且学习到它的精髓之后还可以编写高质量的代码,这就是我推荐给初学者学习的主要原因。今天就带大家来学习JavaScript。这是当年我学习JavaScript的六大步骤,希望对你也有帮助:

1.学习JavaScript基础语法:

古人常道:“万丈高楼平地起”,意思大概是再高的大厦都要从平地开始修建,学习JavaScript也是一样,想要学好它就一定要把基础先打牢,学习JS的第一步是JavaScript基础语法。

首先,你要了解async和defer之间的区别,然后,深入学习代码语法知识,例如变量,数据类型,循环和条件语句,函数,匿名函数,闭包,阵列和关联阵列,事件,正则表达式,promises。

注意语法顺序一定要准确!上述举例如果有遗漏的,大家可以在评论区留言。此外,我个人推荐你学习如何使用Chrome DevTools调试,因为Chrome DevTool是远程调试JS最好的工具。

2.学习面向对象编程:

当你具备一定的JavaScript基础语法后,你应该转向学习面向对象编程(OOPs)。OOPs是JS和其他编程语言中最重要的概念。JS中的OOPs是基于原型继承链上运行的,不像Java或C++是基于对象或类继承。

然而,关于元数据,你可以在学习了OOPs之后再转到学习元数据编程。虽然元数据很好学,但它并不是JS中最重要的部分。我相信,你可不会喜欢JS带来的意外“惊喜”。

3.学习测试QA:

测试代码和调试JS一样重要!你可能听说过TDD(测试驱动开发)或BDD(行为驱动开发)这样的词,但到底是什么意思呢?简而言之,TDD是指写一个未通过的测试用例,然后让测试通过,最后重构。

而BDD则是根据业务,编写具体的例子和自动化的测试,通过探索,发现,定义,最后推出软件所需的行为。BDD和TDD之间没有本质的区别。把它们组合在一起的是,它们都需要一群人,指定软件在执行之前应该如何协同行动。

4.学习jQuery:

jQuery是一套跨浏览器的JavaScript库,它的特点是动态性和互动性。它使用起来十分方便,就jquery本身而言,你经常会遇到如何将AJAX与jQuery整合的问题。AJAX是什么?举个例子来说吧,

「当你在百度浏览器中输入一个关键词,不用刷新便可得到关于词条的一些内容,这就是AJAX」

AJAX是Asynchronous JS and XML的缩写,它主要处理的是与HTML和CSS不同步的请求而产生的问题。

5.学习框架

现在,你已经了解了jQuery,JS基础语法,AJAX,Chrome DevTools,测试QA。以下的是你们现在真正应该学习的内容——框架:

React:

React的前身是React.JS。React最初是由Facebook和少数个人以及一个小社区开发的,但随着时间的推移,React进行了多次的优化,现在它变成了很有意思而且功能很强大的代码,也很容易学习。我个人是十分推荐你学习React的。日后,你可以用React以组件的形式在网页中开发用户界面。

Angular:

Angular在某方面和React非常相似,不过你可以用Angular以组件的形式编写SPA。它是现在IT行业前端开发方面需求量最大的语言。Angular其实是JS框架,基本上意味着它是用JS编写的。

你可以在每个浏览器的各个角落遇见JS,这也侧面证实了JS功能十分强大,也十分有用。我强烈建议你既要学习React,也要学习Angular。

Node.JS:

Node.JS是在服务器端编写JS的框架。用Node.JS写的代码或API的速度快得离谱,而且Node.JS还可以同时处理多个请求。不像其他后端语言,很少有公司在Node.JS上实现了他们的服务器。

它是服务器端语言的未来,在Node中实现的大型Web应用程序的可扩展性和部署方面存在一些问题,所以现在我不会称它为服务器端语言的主角。

Express.JS:

和上文所述的框架一致,它也是一个功能强大的框架。Express.JS简称Express,它是针对Node.JS的web应用框架,在MIT许可证下作为自由及开放源代码软件发行。它被设计来建造web应用和API。

同样它也是由用JS编写的,我个人建议如果你在学习Node.JS,那么一定要把Express.JS也掌握好。

6.学习库

框架学习也结束了,下面正是学习JavaScript之路上至关重要的最后一点。学习一段时间后,你可能绞尽脑汁想写好代码,而且明明思路很清晰,却只能写出一点点代码。这时候你就该使用这个库了,我并没有推广库的想法,而是真心希望你可以拥有非常有趣的学习和使用经历。

Coffee.Script:

Coffee.Script与JS功能类似,但它有一个好处就是没有分号,括号,双引号,甚至是大括号的杂乱和麻烦。当你学习了JS的基础语法,搭建完众多框架,再学习coffee.script,你就会意识到它有多么的很简单。正因为它十分容易编写,所以我真的很推荐你们进行学习。

当你开始学习时也可以使用JS文档访问JavaScript,并且不要害怕一路上承担一些项目。完全不需要担心,项目会给你带来的挑战,项目的一次次完成会带给你不一样的新鲜感和信心,只有突破重围才会看到崭新的自己。记住明天的你会感激现在拼命的自己,当你精通JS之时,任何挑战都没有办法限制你学习。

如果你对这篇文章有任何感悟或想法,可以在评论区留言。我个人对编码充满了激情,我认为每个人都应该学习它,而不是敬而远之。衷心地祝原你在编码的路上越走越稳,越走越快,越走越远。到那时你虽已是码农,但你仍要牢记学习,从中得到启发,并走向更美好的明天。

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。