概述
JavaScript简称JS,是世界上最受欢迎的语言之一。传统观念上JS还属于前端语言,需要依托于浏览器运行。但实质上JS的战场早已不局限于浏览器,NodeJS的出现使得JS可以非常流畅的运行在服务器中。虽然由于设计理念的不同,在服务器中JS更像是一个“工具人”,但必须要承认无论在前端,还是后台JS都有着非常重要的作用。
JavaScript标准由Ecma国际(Ecma International)制订,称为ECMAScript。无论是前端的JS,还是服务器中的Node.js都需要遵循ECMScript的标准,要学习JS首先要学习的就是ECMAScript标准。
所谓标准就是编程语言的语法规范,我们只要按着这个规范去编写程序,程序的解析器就可以执行程序,否则程序的执行就会出现问题,如此而已。学习ES标准其实就是学习语法规范。
自2015年起,ECMAScript开始固定在每年的6月份更新一个版本,并且以年份命名。比如2015年的版本称为ECMAScript 2015(ES2015),2016年的版本称为ECMAScript 2016(ES2016)以此类推,目前是ECMAScript 2019(ES2019)是最新版本。ES2015也是ES的第6个标准,所以也被称为ES6。ES2016可被称为ES7以此类推,但是现在基本上已经很少这样称呼了,所以谈论ES版本时,尽量还是以年份来区分。
学习JS最简单的工具就是浏览器,下载一个最版本的Chrome浏览器,打开它的开发者工具,你的JS的学习之路就可以开始了。
进入开发者工具后,切换到Console标签,下方会出现一个>,在>后边可以直接输入js代码,然后浏览器会自动执行该代码,现在尝试输入:alert('大兄弟,你太帅了')
看到效果了吗?是不是很神奇?alert()
就是一段js的代码,它是什么意思?我们先不管,你只需要知道,在Chrome的控制台中,可以直接执行JS代码。
基本概念
表达式和语句
表达式和语句是程序中的最基本单位,像是上文中的alert()
就可以称为是一个语句。表达式英文叫做Exprisson,语句英文叫做Statement。从本身含义上讲,语句和表达式稍微有些许不同,但是对于我们来讲暂时可以不用区分。
对于浏览器来说,每一个语句就是一条指令,浏览器需要根据我们发送的指令来做出各种操作。作为一个程序员,我们可以将浏览器看成是我们的仆人,语句就是向仆人发出的一个一个指令。学习ES标准,目的是为了能更好的向仆人发出指令。
虽然可能你从来没有过仆人,但依然不妨碍我们幻想一下。假设你是某个朝代的皇帝,而你的仆人就是某个公公。你会如何向他发出指令?“小桂子,今天晚上让甄妃侍寝”。这就是语句。公公收到指令要如何执行的呢?首先他需要去后宫把娘娘接过来,然后回来向你回复。“启禀皇上,娘娘今天不方便!”于是今天你就要一个人睡了。去后宫找娘娘,是公公的行为,向你回复是他行为的结果。
回到现实世界,浏览器就是我们的仆人。浏览器执行指令时,也有两个层面。第一个层面是做什么,第二个层面是回复结果。比如:当我们向浏览器发送alert('大兄弟,你太帅了')
这个指令时,浏览器会在窗口中弹出一个警告框。
警告框就是语句导致浏览器发生的行为。当你点击确定后,在控制台中会出现一个undefined。
undefined就是执行后返回的结果。也许你现在感觉不是很明显,别急慢慢体会。你需要记住,每一个语句的执行都有两个层面,一个是做了什么,一个是返回结果(返回值)。比如:当执行1 + 1时,这条语句做的事就是将1和1进行加法运算,然后返回运算结果2。运算就是它所做的事,而2就是它返回值。
还要注意的是并非所有的语句都会返回结果,比如上边的alert()它所做的事情是弹出了一个警告框。而它返回的结果是undefined,undefined表示未定义,可以直接理解为没有结果。所以alert()这种语句属于只实现功能而不返回值。
如果在说的简明一些,每一条语句都是在向浏览器发送指令。浏览器收到指令后会做一些事,然后向你返回结果。但并不是所有的指令都会返回结果(返回undefined)。
函数和方法
表达式和语句属于一种泛称。在JS中所有的东西都可以被称为语句。但除此之外还有一些更加具体但称呼。就好像人可以被统称为人类,也可以被细分为男人、女人、老人、孩子等。
形如alert()这种,一个内容后边跟着一个()的这种东西被称为函数(function)。以后凡是说到调用什么什么函数,它长得样子大概应该是什么什么()
。比如调用alert函数,就表示你要写alert()
。再或者你看到了一个英文单词后边跟了一个(),你也要知道它是一个函数。所以alert()
,通常会被称为alert函数。
有些时候我们会看到这种东西xxx.yyy()
。这种东西长得和函数很像,但是前边会多出来一个xxx.(比如:console.log()
)。这种东西作用函数函数类似,被称为方法(method)。它的使用方式和函数几乎一样,就是称呼不同。后边我们会说到调用谁谁谁的什么什么方法,那么它大概的样子应该是谁谁谁.什么什么()
。比如,我说调用console的log方法,应该写为console.log()
。
在函数和方法后边的括号里出现的内容被称为参数,像alert('大兄弟,你太帅了')
中的'大兄弟,你太帅了'
就是参数,函数和方法中的参数不是必须的,有些情况下可能没有参数,有些情况下可能会出现多个(多个参数使用 , 隔开)。