js代码位置
首先是如何编写JavaScript
代码,说到这,我们首先要来说明一个需要新人们关注的点,因为我们的js
是一门跨平台
的语言,所以说,我们的代码可以运行在不同的平台
之上。这也就导致了可能相同的代码放在不同的平台运行就会有所出入。
这里面说的平台其实被称之为
宿主环境
。
同时,代码在不同的平台上的运行方式也有所不同。
如果运行在服务端
,那么更多的时候我们需要通过命令行的形式去运行,而如果是代码运行在客户端
,则需要通过启动浏览器
来运行代码。
- 可以将
js
代码编写到标签的onclick
属性中,
示例:
<button onclick="alert('输出内容');">点击<button>
当我们点击按钮时js代码才会执行。
- 可以将
js
代码写在超链接的href
属性中,这样当点击超链接时,会执行js代码
demo:
<a href="javascript:alert('点我干嘛');">点我一下</a>
<a href="javascript:;">可以去除点击超链接返回顶部的效果</a>
虽然可以写在标签的属性中,但他们属于结构与行为耦合
,不方便维护,不推荐使用
- 我们的
js
代码可以写在script
标签内部并且将script
标签放在网页的任何位置。
demo:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
<script>
// js code ...
</script>
</head>
<body>
<script>
// js code ...
</script>
</body>
<script>
// js code ...
</script>
</html>
在上面的代码中,我们把包含有js
代码的script
标签放在了head
标签、body
标签、和body
标签之后的位置。从语法的层面来说,上面的这几种写法都是正确的。但是在本教程中较为推荐的写法是将scirpt
标签放在body
标签的闭合标签的后面。
推荐的原因,是因为
js
代码经常需要操作html
标签,而放在后面可以等到html
标签加载完毕之后再来执行js
代码。避免因为html
标签未加载而导致的报错。
- 而另外一种写法是将
js
代码完全的写在一个后缀名为.js
的文件中。在需要的html
文件中通过script
标签引入。
demo:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
</head>
<body>
</body>
// 通过src属性与script标签配合引入外部的js文件
<script src="01.js"></script>
</html>
js语句
js
当中的语句表示js
向宿主环境发送的命令。
例如下面的语句是向页面中输出计算10 + 2
的结果。
document.write(10+2);//write(rua yi te)
在每一条语句的后面都带有一个分号,表示语句结束。
当然js
允许我们将分号省略掉,如果不写分号,浏览器会自动添加,但会消耗一些系统资源,也会增加代码的维护成本,而且有时候,浏览器会加错分号,所以在开发中分号必须写。
需要注意的是,如果分号前面的语句为空,则没有意义。
; ; ;
类似上面的语句代码是没有意义的。
注释
注释
是任何编程语言当中必不可少的一环。通过注释,可以让我们开发过的代码具有更好的可读性,也能变相的提升后期代码的维护和升级速度。
一般情况下,注释的内容可以包含很多,例如参数信息
,代码功能
、使用方式
等等。
在js
中,注释
分为两种,一种是单行注释
,一种是多行注释
。
单行注释
通过//
表示,一般写在语句的后面或者语句的上方。
// 这里是代码注释
多行注释
通过/**/
的形式来创建,一般写在代码的上方。
/*
这里是多行注释...
*/
无论你是一个js
新人,还是一个成熟的老程序员
,合理的应用注释
都是一个非常好的习惯。
字面量
都是一些不可改变的值,比如1、2、3、4、5...
字面量都是可以直接使用的
直接量
在js
中,直接使用的量,我们称之为叫做直接量
。
例如,在代码中,我们要使用10
,那么这个10
就是一个直接量
。
表达式
一般情况下,表达式
需要得到一个结果。
例如10+2
就是一个表达式,我们在创建这个表达式的时候,就希望得到10+2
的结果。
document.write(10+2);// 通过document.write()方法将10+2这个表达式的结果输出到网页当中
输出方式
我们在编写js
代码的时候,经常需要得到计算的值,用以判断得到的值与我们预期的值是否相符,所以我们需要了解下面的基本的输出方式。
// console.log() 将内容输出到浏览器的控制台,可以输出函数、对象各种复杂的信息
console.log(10+2);
// document.write() 将内容输出到网页当中,只能输出简单的文本效果
document.write(10+2);
通常情况下我们通过
console.log()
这种形式输出代码我们称之为代码打印
。
弹窗
在js
中,如果你的代码运行环境是在浏览器
当中,那么就可以使用浏览器
给我们提供的弹窗。
alert(10+2);
confirm(10+2);
prompt(10+2);
上述的三个弹窗只能够在运行环境为浏览器的情况下使用。
变量
我们上面说到了表达式
,通过表达式
能够得到计算的结果,但是如果我们计算的逻辑较为复杂,那么如果单纯的依赖表达式将会变得不那么方便。
这个时候,就可以使用变量
。
什么是变量
呢?
我们可以把变量
理解为是一个代名词
或者说叫做临时的容器
。
我们可以把一个具体的值存入到变量中。那么此时这个变量就代表着我们这个具体的值。我们如果想要重新的使用这个值,不再需要重新的计算或者其他操作,直接使用变量就可以得到之前存储的这个值。
而想要创建一个变量(也可以说是声明
一个变量),需要通过var
关键字(es6
中通过let
声明)。
var val = 10 + 2;
在上面的代码中,我们创建了一个变量val
,并且使用这个变量val
存储了表达式10+2
的计算结果。那么如果想要第二次使用10+2
的结果,可以直接使用变量val
即可。
console.log(val);// 通过console.log() 输出val,此时就可以在控制台看到10+2的结果
在我们使用变量
的时候,还有一点需要理解,变量
之所以叫变量,是因为变量
随时可以根据我们的需要更改其中存储的值。
var a = 10;
a = 20; // 当我们重新的向变量中存储数据的时候,不需要再加var
console.log(a); // 此时再打印a结果就为20
需要注意的是,上面我们将变量a
内存储的数据由10
变成了20
,在重新存储的过程中,我们并没有使用var
,那么上面的代码就相当于我们将20
的值存储到之前创建的变量a
中。
而如果在重新的存储的过程中使用了var
,如同下面的案例:
var a = 10; // 第一次声明变量a
var a = 20; // 再一次通过var声明变量a,并且使用了var
consoloe.log(a);
需要注意的是,虽然最后的结果和上面的打印结果相同,但是变量a
本质上已经发生了变化。
如果在重新存储数据的过程中,没有在变量名前面加var,那么相当于是更改变量a中存储的值,而如果前面加了var,则相当于重新的创建了一个变量a,并且存储了20这个数据。
如果采用下面的这种写法,那么重新创建的变量将会无效:
var x = 1;
var x;
x // 1
变量提升:
JavaScript
引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部
,这就叫做变量提升(hoisting)。
console.log(a);
var a = 1;
上面代码首先使用console.log
方法,在控制台(console)显示变量a
的值。这时变量a
还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。
var a;
console.log(a);
a = 1;
最后的结果是显示undefined
,表示变量a
已声明,但还未赋值。
标识符
标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。JavaScript 语言的标识符对大小写敏感
,所以a
和A
是两个不同的标识符。
标识符有一套命名规则,不符合规则的就是非法标识符。JavaScript 引擎遇到非法标识符,就会报错。
简单说,标识符命名规则如下。
- 语义化,前缀就能表示出这个变量的类型
- 第一个字符,可以是任意
Unicode
字母(包括英文字母和其他语言的字母),以及美元符号($
)和下划线(_
)。 - 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字
0-9
。 - 关键字和保留字不能做变量名
下面这些都是合法的标识符。
arg0
_tmp
$elem
π
下面则是一些不合法的标识符:
1a // 第一个字符不能是数字
23 // 同上
*** // 标识符不能包含星号
a+b // 标识符不能包含加号
-d // 标识符不能包含减号或连词线
需要注意的是,在js
当中,中文也是合法的标识符,但是并不推荐使用。
JavaScript 有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
网友评论