1. 什么是JavaScript
JavaScript 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端 Web 开发的脚本语言,常用来给 HTML 网页添加动态功能,比如响应用户的各种操作。
2. JavaScript 的组成
- ECMAScript:定义了 JavaScript 的语法规范,描述了语言的基本语法和数据类型;
- BOM(Browser Object Model):浏览器对戏那个模型。有一套成熟的可以操作浏览器的 API,例如:弹出框,浏览器跳转和获取分辨率等;
- DOM(Document Object Model):文档对象模型。有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素,例如:增加
div或给div换个位置等
总结:JS 就是i同u哦固定的语法区操作浏览器和标签结构来实现网上的各种效果
4. JavaScript 代码的书写位置
js 代码的书写位置分别为:行内式、内嵌式和外链式
4.1 行内式 JS 代码(不推荐)
href属性- 在
a标签的herf属性的位置写上javascript:;就不会跳转,并且在冒号和分号之间编写 js 代码 - 语法:
<a href="javascript:alert('hello world!');">Click here</a>
- 在
click等事件属性- 语法:
<div onclick="alert('this is an alert')">Click here</div>
- 语法:
4.2 内嵌式 JS 代码(不推荐)
- 内嵌式的 JS 代码会在页面打开的时候直接触发
- 语法:
<!-- 在 html 页面书写一个 script 标签,标签内部书写 js 代码 --> <sciprt type="text/javascript"> alert("this is an alert"); </script> script标签对原则上可以书写在页面的任意位置,推荐放在body的末尾- 一个页面原则上可以书写任意多个 script 标签,会按照从上到下的顺序依次执行每一个 script 标签中的代码
4.3 外链式 JS 代码(推荐)
- 外链式代码式书写在一个 .js 文件内
- 语法:
<script src="index.js"></script> - 一个 script 标签当你书写了 src 属性以后, 表示你要把他当做外链式使用,此时就不能在当做内嵌式使用了, 写在标签对内的内容没有意义了
5. 变量
变量式计算机中用来存储数据的“容器”。
5.1 声明变量及赋值
语法:var varName = value;
<script>
// 1. 声明但不赋值
var x;
// 2. 声明并赋值
var y = 1;
// 3. 一定性声明多个变量但不赋值
var a, b, c;
// 4. 一次性声明多个变量并赋值
var x1 = 1, x2 = 2, x3 = 3;
// 一次性声明多个变量, 有的赋值有的不赋值
var y1 = 1, y2, y3 = 3;
</script>
5.2 变量的命名规则和规范
- 命名规则:
- 一个变量只能由 字母(a-z, A-Z) 数字(0-9) 下划线(_) 美元符($) 组成
- 一个变量不能由 数字 开头
- 变量严格区分大小写
- 命名规范:
- 小驼峰命名法
6. 基本数据类型
6.1 数值类型(Number)
包含一切数字和数值相关的内容:
- 整数:100,234
- JS中的数值并不是无限大的,当数值超过一定范围后会显示近似值
- 大整数(BigInt)使用 n 结尾,例如:
let a = 999999999999n
- 浮点数:41.51,-0.456
- 科学计数法:10e5
- 其他进制表示
- 二进制表示:0b100
- 八进制:0o100
- 十六进制:0x100
- 无穷:Infinity
- 非数字:NaN
6.2 字符串类型(String)
反引号(``)定义的字符串可以换行书写,并且可以在字符串内直接用 ${} 的形式解析变量,这种字符串也被称为“模板字符串”
6.3 布尔类型(Boolean)
略
6.4 Null 类型(Null)
- null 表示有值,但是是一个空值
- 使用时需要给变量赋值为 null,才能得到 null
- 使用
typeof检查一个空值时会返回 "object" - 使用
typeof无法检查空值
6.5 Undefined 类型(Undefined)
- 只声明变量,不赋值的情况下,变量的默认值为
undefined,一般很少【直接】为某个变量赋值为undefined - 使用
typeof检查一个Undefined类型的值时,会返回 "undefined"
6.5 Symbol
- 用来创建唯一标识
- 使用
typeof检查符号时会返回 "symbol" - 语法:
<script> let c = Symbol(); // 调用 Symbol 函数创建一个符号 console.log(typeof c); </script>
6.5 复杂数据类型
- 对象类型(Object)
- 函数类型(Function)
7. 检测数据类型
7.1 typeof
- 语法:
typeof 变量或typeof(变量) - 返回值:返回一个字符串
- 当你需要检测两个内容的运算结果的时候, 必须要使用 () 包裹
<script> console.log(typeof 100 + 200); // number200 console.log(typeof(100 + 200)); // number </script>
7.2 isNaN()
- 语法:
isNaN(要检测的数据) - 返回值:布尔值
console.log(isNaN(100)); // false
console.log(isNaN("Jack")); // true
console.log(isNaN("123")); // false
7.3 Number.isNaN()
略
8. 数据类型转换
8.1 其他类型转成数值
- 方式一:Number(变量)
- 转换规则:
- 如果整体可以转换为一个合法数字,那么就是这个数字
- 如果整体不可以转换为合法数字,返回 NaN
- 注意:
- true 会转换为 1,false 会转换为 0
- 如果字符串是空串或纯空格的字符串,则转换为 0
Number('123'); // 123 Number('abc'); // NaN Number('3.1415926'); // 3.1415926 Number('11px'); // NaN Number(''); // 0 Number(' '); // 0 - 转换规则:
- 方式二:parseInt(字符串) 和 parseFloat(字符串)
- 转换规则:解析时,会自左向右读取一个字符串,直到读取到字符串中所有的有效的整数
- 注意:
- 只能用于字符串转换为数值
- 如果传入数值,则会转换整数或浮点数
- 如果传入其他类型的数据,则返回 NaN
parseInt('123px'); // 123 parseInt('a123'); // NaN parseInt('456.123'); // 456 parseInt(true); // NaN parseInt(123); // 123 parseInt(123.41); // 123 - 方式三:除了加法以外的数学运算
- 转换规则:
- 和 Number() 的规则一样
- 运算符两边都是可运算数字才行,如果运算符任何一边不是一个可运算数字,那么就会返回 NaN
- 举例:
num - 0num * 1- ...
- 转换规则:
8.2 其他类型转成字符串
-
方式一:toString()
- 语法:
数据.toString() - 注意:
- 除了
null和undefined以外都行 - 无法通过字面量调用
toString()
- 除了
let x; x = 10; console.log(x.toString()); // '10' x = null; console.log(x.toString()); // null x = undefined; console.log(x.toString()); // undefined console.log(123.toString()); // error!! - 语法:
-
方式二:String(数据)
- 语法:
String(数据) - 注意:
- 所有数据都能转换
- 可以传入字面量
console.log(String(123)); // '123' console.log(String(null)); // 'null' console.log(String(undefined)); // 'undefined' - 语法:
-
方式三:使用加法运算
- 语法:
要转换的数据 + '' - 实际上使用的是字符串拼接语法
- 语法:
8.3 其他数据类型转成布尔
- 方式:Boolean(数据)
- 语法:
Boolean(数据) - 注意:在 js 中,只有 ''、0、null、undefined和NaN,转成布尔会返回 false,其余都是 true
- 语法:
9. 运算符
运算符不只是数学运算,数学运算只是诸多运算符的一种
9.1 +
- 只有符号两边都是数字或者布尔值的时候才会进行加法运算
- 只要符号任意一边是字符串类型,就会进行字符串拼接
console.log(true + true); // 2
9.2 -、*、/、%、
会自动把两边的都转成数字进行运算(相当于先调用 Number() 函数)
9.3 关系运算符
== 比较符号两边的值是否相等,不管数据类型
=== 比较符号两边的值和数据类型是否都相等(推荐使用)
9.4 赋值运算符、+= 等运算符、逻辑运算符、自增自减运算符
略
10. 条件分支语句
- if 条件分支
- switch 条件分支结构
- 三元运算符
语法和 Java 一样
11. 循环控制语句
- while 循环
- do...while 循环
- for(let i = 0; i < length; i++) 循环
语法和 Java 一样