js介绍与简单应用

135 阅读6分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 N 天,点击查看活动详情

js的特点与组成

js全称为JavaScript,但是和Java无关

js是一个高级、动态、解释型、弱类型的编程语言,适合面向对象和函数式编程风格。

其中弱类型指的就是js的变量是无类型的,甚至在非严格模式下,变量可以不声明就使用。

完整的 JavaScript 实现包含:

  • 核心【ECMAScript】
  • 文档对象模型【DOM】:是一个关于HTML和XML文档的API编程接口,用于在文档中使用js进行文档节点的增删改查。是真正跨平台、语言无关的表示和操作网页的方式。
  • 浏览器对象模型【BOM】:提供了与网页无关的浏览器功能对象,用于浏览器窗口见的互操作。

宿主环境

定义

简单来说就是js运行依靠的环境。

每种语言都必须有一个平台或标准库,用于执行包括基本输入和输出在内的基本操作。

核心JavaScript语言定义了最小限度的API,可以操作数值、文本,数组、集合、映射等,但不包含任何输入和输出功能。

输入和输出(以及更复杂的特性,如联网、存储和图形处理)是内嵌JavaScript的“宿主环境”的责任。

浏览器【最早宿主环境】

浏竟器是JavaScript最早的宿主环境,也是JavaScript代码最常见的运行环境。

浏览器环境允许JavaScript代码从用户的鼠标和键盘或者通过发送HTTP请求获取输入,也允许JavaScript代码通过HTML和CSS向用户显示输出。

node【另一宿主环境】

Node给予了 JavaScript访问整个操作系统的权限,允许JavaScript程序读写文件,通过网络发送和接收数据,以及发送和处理HTTP请求。

如何运行js

交互式运行

浏览器控制台

按F12或是鼠标右键检查可以开启浏览器的Web开发者工具,其中的Console【控制台】标签,可以在其中简单书写js代码并运行。

Node运行js

下载安装Node后,可以打开终端窗口【cmd命令行窗口】,输入node并回车,之后就可以和浏览器的控制台中一样,进行一个交互式的js会话。

以文件为单位运行

创建一个以.js为文件后缀的文件。

  • 在HTML文件中使用script标签来引用该文件。
  • 在node中使用node 文件运行该文件。

内嵌式语法

使用<script>包裹js代码,浏览器解析到当前位置时会进行加载并执行。具体执行和页面渲染应该看 《HTML5》专栏中的《script》一文

以及《浏览器原理》专栏中的《浏览器渲染原理》【目前还在草稿箱中以后补上】

词法结构

词法结构规定了该门语言最低级语法:

  • 变量的命名规范
  • 注释如何书写
  • 如何分隔代码语句
  • 字面量
  • Unicode
  • 是否区分大小写

下面简单介绍几部分

大小写的区分

js区分大小写,和java、c++一样,要注意标识符之间的大小写区别。

对于空白符的解释

js忽略语句、标识符之间的空白符【空格、制表符等】,所以可以根据自身习惯、自身代码风格来自行控制代码的缩进。

但是JavaScript将换行符,回车符和回车/换行序列识别为行终止符。

注释

和c++的注释差不多。

//单行注释

/*
    多行注释
*/

标识符和保留字

保留字

保留字简单来讲就是基础语法中原来就存在的,已经有意义的名称。

保留字大部分不能用于常量、变量、函数或类的名称,但是可以用做对象中属性的名称。

剩余的那些保留字只能在少数完全没有语法歧义的情况下使用。

最简单的做法也是推荐做法是:完全不要用保留字作为标识符,除了from、set和target这三者,因为这三者常见且合法。

另外argument和eval虽然不是保留字,但是也不要作为标识符,因为某些情况下由于历史原因不允许。

保留字如下:

image.png

标识符

所谓标识符其实就是用户给js中的一些内容起的名称。而这些名称需要遵循一定的起名规范:

  • 必须以字母、下划线、美元符号开头。
  • 后续的字符可以是字母、数字、下划线、美元符号
  • 大部分保留字不能作为标识符

由于JavaScript程序是使用Unicode字符集编写的,所以语言本身支持在标识符中使用非表情符号的Unicode字母、数字和象形文字。

由于js实现了Unicode字符的转义序列,所以也可以在标识符中用转义序列来表示一个Unicode字符。

例如:

let 我 = 1;       //定义一个名称为“我”的变量,并初始化为1。
console.log(我);  //输出"我"这个变量,结果为1。

可选的分号

js使用分号来分隔语句,但是该分号是可以省略的,编译器会自己判断语句的结束。

js除了3种情况外,会在下一个非空格字符无法被解释为当前语句的一部分时才将换行符当作分号。

image.png 三种情况如下:

  1. return, throw, yield、break和continue语句经常独立存在,但有时候后面也会跟一个标识符或表达式。如果这几个单词后面(任何其他标记前面)有换行符,JavaScript就会把这个换行符直接解释为分号。
  2. ++和--操作符既可以放在表达式前面,也可以放在表达式后面。如果想把这两个操作符作为后置操作符,那它们必须与自己操作的表达式位于同一行,否则换行符会被当做分号。
  3. 当定义箭头函数时,箭头必须和参数列表在同一行,否则回车会被看为分号。

但是这样做可能与程序员的想法不一致,从而导致代码有语法或是逻辑上的错误。

所以最好带上分号。

句末语

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 N 天,点击查看活动详情