简介

引入方式

  • JavaScript程序不能独立运行,它需要被嵌入HTML中,然后在浏览器中才能执行
  • JavaScript代码,通过script标签将JavaScript代码引入到HTML中,有两种方式
    1. 内部方式
      • 通过script标签包裹JavaScript代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <!DOCTYPE html>
    <html lang="en">

    <head>
    <meta charset="UTF-8">
    <title>JavaScript 基础 - 引入方式</title>
    </head>

    <body>
    <!-- 内联形式:通过 script 标签包裹 JavaScript 代码 -->
    <script>
    alert('嗨,欢迎来传智播学习前端技术!')
    </script>
    </body>

    </html>
    1. 外部形式:一般JavaScript代码写在独立的以.js结尾的文件中,然后通过script标签的src属性引入
    1
    document.write('HELLO WORLD')
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE html>
    <html lang="en">

    <head>
    <meta charset="UTF-8">
    <title>JavaScript 基础 - 引入方式</title>
    </head>

    <body>
    <!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 -->
    <script src="demo.js"></script>
    </body>

    </html>
    • 如果script标签使用src属性引入了某.js文件,那么标签内的代码会被忽略
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <!DOCTYPE html>
    <html lang="en">

    <head>
    <meta charset="UTF-8">
    <title>JavaScript 基础 - 引入方式</title>
    </head>

    <body>
    <!-- 外部形式:通过 script 的 src 属性引入独立的 .js 文件 -->
    <script src="demo.js">
    // 此处的代码会被忽略掉!!!!
    alert(666);
    </script>
    </body>

    </html>

注释

  • JavaScript里支持两种形式的注释语法
    1. 单行注释:使用//注释单行代码
    2. 多行注释:使用/* */注释多行代码

结束符

  • 在JavaScript中,;代表一段代码的结束。但多数情况下可以省略;,使用回车(enter)替代。

输入和输出

  • 输入和输出也可以理解为人与计算机的交互,用户通过键盘、鼠标等项计算机输入信息,计算机处理后再展示结果给用户,这便是一次输入和输出的过程。
  • 举例说明:按键盘上的方向键,键可以滚动页面,按这个动作叫做输入,页面发生了滚动这便叫做输出
    1. 输入
      • 向prompt()输入任意内容会以弹窗的形式出现在浏览器中,一般提示用户输入一些内容
    2. 输出
      • JavaScript可以接收用户的输入,然后再将输入的结果输出:
        • alert()、document.write()
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!DOCTYPE html>
    <html lang="en">

    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    </head>

    <body>
    </body>

    <script>
    let tmp = prompt('请输入一些内容')
    alert(tmp)
    document.write(tmp)
    </script>

    </html>

变量

声明

  • 声明(定义)变量由两部分组成:声明关键字、变量名(标识)
  • 关键字是JavaScript中内置的一些英文词汇(单词或缩写),它们代表某些特定的含义,如let的含义是声明变量的。
  • let和var都是JavaScript中声明变量的关键字,推荐使用let声明变量

赋值

  • 声明(定义)变量相当于创造了一个空的容器,通过赋值向这个容器中添加数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 声明和赋值</title>
</head>
<body>

<script>
// 声明(定义)变量有两部分构成:声明关键字、变量名(标识)
// let 即关键字,所谓关键字是系统提供的专门用来声明(定义)变量的词语
// age 即变量的名称,也叫标识符
let age
// 赋值,将 18 这个数据存入了 age 这个“容器”中
age = 18
// 这样 age 的值就成了 18
document.write(age)

// 也可以声明和赋值同时进行
let str = 'hello world!'
alert(str);
</script>
</body>
</html>

关键字

  • JavaScript 使用专门的关键字 letvar 来声明(定义)变量,在使用时需要注意一些细节:

    • 以下是使用 let 时的注意事项:
      1. 允许声明和赋值同时进行
      2. 不允许重复声明
      3. 允许同时声明多个变量并赋值
      4. 不能使用关键字当做变量名
    • 以下是使用 var 时的注意事项:
      1. 允许声明和赋值同时进行
      2. 允许重复声明
      3. 允许同时声明多个变量并赋值
      4. 不能使用关键字当做变量名
  • 大部分情况使用 letvar 区别不大,但是 let 相较 var 更严谨,因此推荐使用 let,后期会更进一步介绍二者间的区别。

变量名命名规则

  • 关于变量的名称(标识符)有一系列的规则需要遵守:
    1. 只能是字母、数字、下划线、$,且不能能数字开头
    2. 字母区分大小写,如 Age 和 age 是不同的变量
    3. JavaScript 内部已占用于单词(关键字或保留字)不允许使用
    4. 尽量保证变量具有一定的语义,见字知义
  • 注:所谓关键字是指 JavaScript 内部使用的词语,如 letvar,保留字是指 JavaScript 内部目前没有使用的词语,但是将来可能会使用词语。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 变量名命名规则</title>
</head>
<body>

<script>
let age = 18 // 正确
let age1 = 18 // 正确
let _age = 18 // 正确

// let 1age = 18; // 错误,不可以数字开头
let $age = 18 // 正确
let Age = 24 // 正确,它与小写的 age 是不同的变量
// let let = 18; // 错误,let 是关键字
let int = 123 // 不推荐,int 是保留字
</script>
</body>
</html>

常量

  • 概念:使用 const 声明的变量称为“常量”。
  • 使用场景:当某个变量永远不会改变的时候,就可以使用 const 来声明,而不是let。
  • 命名规范:和变量一致
1
const PI = 3.14
  • 注意:常量不允许重新赋值,声明的时候必须赋值(初始化)

数据类型

  • 计算机可以处理大量的数据,为了方便数据的管理,将数据分成了不同的类型,可以通过typeof关键字检测数据类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 数据类型</title>
</head>
<body>

<script>
// 检测 1 是什么类型数据,结果为 number
document.write(typeof 1)
</script>
</body>
</html>

数值类型

  • 数值可以是小数、正数、负数,在JavaScript中也一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 数据类型</title>
</head>
<body>

<script>
let score = 100 // 正整数
let price = 12.345 // 小数
let temperature = -40 // 负数

document.write(typeof score) // 结果为 number
document.write(typeof price) // 结果为 number
document.write(typeof temperature) // 结果为 number
</script>
</body>
</html>

字符串类型

  • 通过单引号、双引号或者反引号包裹的数据都叫做字符串,单引号和双引号没有本质上的区别,推荐使用单引号
  • 注意事项:
    1. 无论是单引号还是双引号,都需要成对使用
    2. 单引号和双引号可以互相嵌套,但不能自己嵌套自己
    3. 必要时可以使用转义符\来输出单引号或双引号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 数据类型</title>
</head>
<body>

<script>
let user_name = '小明' // 使用单引号
let gender = "男" // 使用双引号
let str = '123' // 看上去是数字,但是用引号包裹了就成了字符串了
let str1 = '' // 这种情况叫空字符串

documeent.write(typeof user_name) // 结果为 string
documeent.write(typeof gender) // 结果为 string
documeent.write(typeof str) // 结果为 string
</script>
</body>
</html>

布尔类型

  • 表示肯定或否定时,在计算机中对应的是不二数据类型,它有两个固定的值true和false,表示肯定的数据用true,表示否定的数据用false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 数据类型</title>
</head>
<body>

<script>
// pink老师帅不帅?回答 是 或 否
let isCool = true // 是的,摔死了!
isCool = false // 不,套马杆的汉子!

document.write(typeof isCool) // 结果为 boolean
</script>
</body>
</html>

undefined

  • 未定义是比较特殊的类型,只有一个值undefined,只声明变量,不赋值的情况下,变量的默认值为undefined,一般很少直接为某个变量赋值为undefined
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 数据类型</title>
</head>
<body>

<script>
// 只声明了变量,并末赋值
let tmp;
document.write(typeof tmp) // 结果为 undefined
</script>
</body>
</html>
  • 注意:JavaScript中变量的值决定了变量的数据类型。

类型转换

  • 在JavaScript中数据被分成了不同的类型,如数值、字符串、布尔值、undefined,在实际变成的过程中,不同的数据类型之间存在着转换的关系。

隐式转换

  • 某些运算符被执行时,系统内部将自动将数据类型进行转换,这种转换称为隐式转换。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 隐式转换</title>
</head>
<body>
<script>
let num = 13 // 数值
let num2 = '2' // 字符串

// 结果为 132
// 原因是将数值 num 转换成了字符串,相当于 '13'
// 然后 + 将两个字符串拼接到了一起
console.log(num + num2)

// 结果为 11
// 原因是将字符串 num2 转换成了数值,相当于 2
// 然后数值 13 减去 数值 2
console.log(num - num2)

// 结果为 ab,例如输入1和2,输出为12
let a = prompt('请输入一个数字')
let b = prompt('请再输入一个数字')

alert(a + b);
</script>
</body>
</html>

显示转换

  • 编写程序时,过度依赖系统内部的隐式转换是不严谨的,因为隐式转换的规律并不清晰,大多是靠经验总结的规律,为了避免隐式转换带来的问题,通常需要根据逻辑对数据进行显示转换。

Number

  • 通过Number显示转换成数值类型,当转换失败时结果为NaN(Not a Number),即不是一个数字
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript 基础 - 隐式转换</title>
</head>
<body>
<script>
let t = '12'
let f = 8

// 显式将字符串 12 转换成数值 12
t = Number(t)

// 检测转换后的类型
// console.log(typeof t);
console.log(t + f) // 结果为 20

// 并不是所有的值都可以被转成数值类型
let str = 'hello'
// 将 hello 转成数值是不现实的,当无法转换成
// 数值时,得到的结果为 NaN (Not a Number)
console.log(Number(str))
</script>
</body>
</html>

运算符

算术运算符

  • 数字是用来计算的,比如:乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。
  • 算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等
参数 取值
过渡属性 所有属性 all;具体属性 width
过渡时长 数字 + s(秒)
blur 可选,模糊度
spread 可选,阴影扩大
color 可选,阴影颜色
inset 可选,将阴影改为内部阴影
  • 注意:在计算失败时,显示的结果是NaN(Not a Number)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 算术运算符
console.log(1 + 2 * 3 / 2) // 4
let num = 10
console.log(num + 10) // 20
console.log(num + num) // 20

// 1. 取模(取余数) 使用场景: 用来判断某个数是否能够被整除
console.log(4 % 2) // 0
console.log(6 % 3) // 0
console.log(5 % 3) // 2
console.log(3 % 5) // 3

// 2. 注意事项 : 如果我们计算失败,则返回的结果是 NaN (not a number)
console.log('pink老师' - 2)
console.log('pink老师' * 2)
console.log('pink老师' + 2)

赋值运算符

  • 赋值运算符:对变量进行赋值的运算符
运算符 作用
+= 加法赋值
-+ 减法赋值
*= 乘法赋值
/= 除法赋值
%= 取余赋值

自增/自减运算符

符号 作用 说明
++ 自增 变量自身的值加1,例如: x++
自减 变量自身的值减1,例如: x–

比较运算符

运算符 作用
> 左边是否大于右边
< 左边是否小于右边
>= 左边是否大于或等于右边
<= 左边是否小于或等于右边
=== 左右两边是否类型和值都相等(重点)
== 左右两边值是否相等
!= 左右值不相等
!== 左右两边是否不全等

逻辑运算符

符号 名称 日常读法 特点 口诀
&& 逻辑与 并且 符号两边有一个假的结果为假 一假则假
|| 逻辑或 或者 符号两边有一个真的结果为真 一真则真
! 逻辑非 取反 true变false false变true 真变假,假变真

语句

综合案例