这一系列文章是写给初学编程的人看的,所以在一些地方可能会比较简单和不太严谨,敬请谅解。这是本系列的第一篇文章,讲述了JavaScript的一些基本概念和它有哪些应用。
JavaScript是一种程序设计语言,也就是编程语言。它原先主要用于网页编程,但是现在还有很多其它地方也能够使用JavaScript了。
大家可能听说过汇编和C语言、C++等。总会有一种错觉,JavaScript比C语言可以做的东西要少,或许在偏向底层硬件的情况下是这样的,但是在应用软件这一层面,其实是差不多的。
JavaScript也是图灵完备的语言。图灵完备,简单来说就是,所有能够使用程序解决的问题,都能使用一门语言编写程序来解决,那么这门语言就是图灵完备的。
JavaScript,为了能够让大多数浏览器都支持,那么需要一个标准,早前呢,各家浏览器的JavaScript标准都有所不同,这样程序员做一个网页,就需要适配不同的浏览器,而现在大多数浏览器都采用了ECMA标准,因此现在我们所说的JavaScript都是指采用ECMA标准的JavaScript,即ECMAScript。
随着时代的发展,ECMA标准的版本一直增加,其中以第6个版本作为分界点,支持ECMA标准第6版及以上的浏览器,我们一般称之为“现代浏览器”。例如Edge、Chrome、Firefox等。
在程序设计语言之中,还有一门叫做Java的编程语言,不过JavaScript和它没有任何的关系。
现在,JavaScript最广泛的应用依然是网页。不过,所谓的网页,不仅仅是通过浏览器访问的才能算作网页,我们可以使用electron把它封装成桌面应用程序,也可以使用cordova等将其封装成移动应用程序。除此之外,我们还可以使用NodeJS来开发服务端程序。
还有一些特色应用,例如小程序,也可以使用JavaScript来进行开发。
各种环境,一般都支持运行JavaScript,不一定支持直接运行TypeScript。TypeScript是JavaScript的超集,主要区别在于JS是弱类型的,TS可以加上类型声明,并且可以编译为JS程序。不过,我们这一系列的文章重点在于JS。
很多环境都能运行JavaScript,最常见的就是浏览器。不用安装什么东西,就能看到效果了。NodeJS也是应用十分广泛的一种运行JavaScript的环境。浏览器主要用于网页编程,NodeJS主要用于服务端或桌面编程。
虽然有着各种各样的环境,但是不同的环境之间是有差别的。
JavaScript大致可以分为核心和非核心两部分。核心部分的内容,在所有环境上都是一样的,非核心部分在不同的环境下的表现是不同的。例如,在浏览器中,有BOM和DOM环境,这两样东西是用来操作网页上的各种元素的,例如段落、文字、超链接、图片、视频、音频等,这些内容都是可以通过JavaScript来进行交互的;而由于NodeJS它不是用来做网页的,所以它没有必要提供BOM和DOM,因此在NodeJS下,你不能使用JavaScript来进行BOM和DOM的交互,因为NodeJS中没有BOM和DOM。
需要注意的一点,就是这里所谓的浏览器环境,不仅包括单独的浏览器、也包括封装了的浏览器,例如Electron所使用的Chromium、cordova所使用的WebView等。
为了方便,我们就以浏览器环境为主。首先需要准备一个浏览器,Win10及以上默认的Edge即可。当然如果你使用的是Ubuntu,也可以选择默认的Firefox。不过,使用chrome或许是一个比较好的选项。
大多数编程语言的代码,都是写在一个文本文件里面的,JavaScript也不例外,默认的记事本即可。一般而言,JavaScript代码文件的后缀名为js,但是它能嵌入在html网页中。同时,它也能在开发者工具中交互运行,为了将重点放在JavaScript上,我们就进入about:blank,空白页,按下F12,打开开发者工具,来了解JavaScript。
开发者工具中,有很多项目,在初期,主要就关心三个项目:元素、控制台和网络。元素,是指网页上有什么东西,网络就是当前网页发送的和接收的消息,而控制台就是运行JavaScript的地方。
在控制台中,向右的箭头后面就是写代码的地方,向左的箭头代表的是这一行代码运行后的返回值。
console.log("123");
我们在控制台输入上述代码,就会看到控制台输出了123。如果代码有错误的话,就会报错,如果没有报错,那么代码就是语法正确的。(一个程序是否正确,首先是语法正确,即运行后不会报错,其次是要方法正确,即能够正确输出问题的结果)
在JS中,分号是可有可无的,虽然一般一行写一句,但是一行可以写多句语句,在这种情况下,分号就是必须的了。
JS是面向对象的,在上述代码中,console代表控制台这一个对象,log是console的一个方法,传入了一个字符串参数。
一个类,是指一个具有共同属性和行为的概念。例如“汽车”类,有车牌号、车身颜色等属性,有前进、倒退、左转、右转、停车等行为。这些属性和行为在类的概念中,被称为成员。属性称为成员属性、行为称为成员方法。方法,有时候也被称为函数。
一个对象,是指一个类的具体指代。例如路上的某一辆车,就是汽车类的一个对象,路上不同的车,就是汽车类的多个对象。因此,一个对象具有类的属性和行为。
在面向对象中,将类变成对象的过程称之为实例化。
更多内容,我们在下一篇文章中说明。