1.1 js介绍
js可以让我们的页面更加的智能,让页面和用户进行交互。
1.2 引入方式
同样,js代码也是书写在html中的,那么html中如何引入js代码呢?主要通过下面的2种引入方式:
第一种方式:内部脚本,将JS代码定义在HTML页面中
-
JavaScript代码必须位于<script></script>标签之间
-
在HTML文档中,可以在任意地方,放置任意数量的<script>
-
一般会把脚本置于<body>元素的底部,可改善显示速度
例子:
<body>
<script>
alert('Hello JS');
</script>
</body>
第二种方式:外部脚本,将JS代码定义在外部 JS文件中,然后引入到 HTML页面中
-
外部JS文件中,只包含JS代码,不包含<script>标签
-
引入外部js的<script>标签,必须是双标签
例子:
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="js/demo.js"></script>
</head>
注意:demo.js中只有js代码,没有<script>标签
1.3 基础语法
1.3.1 书写语法
掌握了js的引入方式,那么接下来我们需要学习js的书写了,首先需要掌握的是js的书写语法,语法规则如下:
-
区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的
-
每行结尾的分号可有可无
-
大括号表示代码块
-
注释:
-
单行注释:// 注释内容 快捷键ctrl+/
-
多行注释:/* 注释内容 */ 快捷键ctrl+shift+/
-
输出语句:
<script>
//输出警告
alert('输出警告 JS');
//页面输出
document.write('页面输出js');
//控制台输出
console.log('控制台输出js');
</script>
1.3.2 变量
js中主要通过如下3个关键字来声明变量的:
关键字 | 解释 |
---|---|
var | 早期ECMAScript5中用于变量声明的关键字,全局变量,作用域大,可以重复定义 |
let | ECMAScript6中新增的用于变量声明的关键字,相比较var,let只在代码块内生效,不能重复定义 |
const | 声明常量的,常量一旦声明,不能修改 |
在js中声明变量还需要注意如下几点:
-
JavaScript 是一门弱类型语言,变量可以存放不同类型的值 。
-
变量名需要遵循如下规则:
-
组成字符可以是任何字母、数字、下划线(_)或美元符号($)
-
数字不能开头
-
建议使用驼峰命名
-
var定义变量:
<script>
var i = 1;
var i = "a"; //可以重复定义
alert(i); //输出a
</script>
<script>
{
var i = 1;
}
alert(i); //代码块外面仍可访问i,i是全局作用域
</script>
let定义变量:
<script>
{
let i = 1;
}
alert(i); //代码块外面访问i,i无法输出,i是局部作用域
</script>
const定义常量:
<script>
{
const i = 1;
alert(i);
}
</script>
1.3.3 数据类型和运算符
虽然js是弱数据类型的语言,但是js中也存在数据类型,js中的数据类型分为 :原始类型 和 引用类型,具体有如下类型:
数据类型 | 描述 |
---|---|
number | 数字(整数、小数、NaN(Not a Number)) |
string | 字符串,单双引皆可 |
boolean | 布尔。true,false |
null | 对象为空 |
undefined | 当声明的变量未初始化时,该变量的默认值是 undefined |
使用typeof函数可以返回变量的数据类型,接下来我们需要通过书写代码来演示js中的数据类型
<script>
alert(typeof 3); //number
alert(typeof 3.14); //number
alert(typeof NaN); //number
alert(typeof "a"); //string
alert(typeof 'a'); //string
alert(typeof null); //object
var a;
alert(typeof a); //nudefined
</script>
js中的运算规则绝大多数还是和java中一致的,具体运算符如下:
运算规则 | 运算符 |
---|---|
算术运算符 | + , - , * , / , % , ++ , -- |
赋值运算符 | = , += , -= , *= , /= , %= |
比较运算符 | > , < , >= , <= , != , == , === 注意 == 会进行类型转换,=== 不会进行类型转换 |
逻辑运算符 | && , || , ! |
三元运算符 | 条件表达式 ? true_value: false_value |
注意:==进行比较时,先比较类型是否一致,不一致就转换,然后比较值是否相等。
===进行比较,类型和值都一致时返回true,其他都是false。
<script>
var age = 20;
var _age = "20";
var $age = 20;
alert(age == _age);//true ,只比较值
alert(age === _age);//false ,类型不一样
alert(age === $age);//true ,类型一样,值一样
</script>
数据类型转换
转换成数据类型:
在js中,虽然不区分数据类型,但是有时候涉及到数值计算,还是需要进行类型转换的,js中可以通过parseInt()函数来进行将其他类型转换成数值类型。
<script>
alert(parseInt ("12345")); //12345
alert(parseInt("12A45")); //12 遇到非数字就结束
alert(parseInt("a1234")); //NaN 第一个就是非数字输出NaN
</script>
其他数据类型转换为布尔类型:
0,null,undefined, "",NaN理解成false,反之理解成true。
“”是空字符串,可以转换成false; “ ”不是空字符串,是包含空格的字符串,可以转换成true。
流程控制语句if,switch,for等和java保持一致。