JavaScript语言介绍
概念
- 浏览器脚本语言,书写在script标签中
- 脚本:一段功能代码块,可以嵌套在其他语言中使用,完成一些额外的功能
- 可以编写运行在浏览器上的代码程序
属于解释性、弱语言类型编程语言
三个组成部分
ES语法:ECMAScript、主要版本ES5和ES6
- DOM:文档对象模型(Document Object Model),是W3C组织推荐的处理可扩展标志语言的标准编程接口。
- BOM:浏览器对象模型(Browser Object Model),提供了独立于内容的、可以与浏览器窗口进行互动的对象结构;且由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。
三种存在位置
行间式:存在于行间事件中
1
2
3
4
5<div onmouseover="this.style.color = 'red'" onmouseleave="this.style.color = 'orange'">Hello world!</div>
i) 行间式代码块书写在一个个全局时间名属性中
ii) 在某一个标签的某一个事件属性值中,出现的this代表该标签
iii)该标签对象this可以访问该标签的任意全局属性(style),然后再间接访问具体需要操作的对象(style.color)
内联式:存在于页面script标签中
1 | <body> |
外联式:存在于外部JS文件,通过script标签src属性链接
1 | test.js文件 |
解释性语言特性决定JS代码位置
出现在head标签底部:依赖型JS库
1
2
3
4<head>
<title></title>
<script>在这里</script>
</head>出现在body标签底部:功能型JS脚本
1
2
3
4
5
6
7<html>
<body>
</body>
<script>
在这里
</script>
</html>
JS语法规范
- 注释
1 | // 单行注释 |
- 以分号作为语句结尾(允许省略)
变量的定义
ES5定义变量
1 | var num = 10; // 无块级作用域变量 |
ES6定义变量
1 | let num = 10; // 局部变量 |
1 | // ES5 | ES6 |
四种定义变量的方式
1 | 四种定义变量的方式 |
变量(标识符)的命名规范
- 由字母,数字,_,$组成,不能以数字开头(可以包含中文字符)
- 区分大小写
- 不能出现关键字及保留字
1 | // 命名规范 |
abstract | arguments | boolean | break | byte |
case | catch | char | class* | const |
continue | debugger | default | delete | do |
double | else | enum* | eval | export* |
extends* | false | final | finally | float |
for | function | goto | if | implements |
import* | in | instanceof | int | interface |
let | long | native | new | null |
package | private | protected | public | return |
short | static | super* | switch | synchronized |
this | throw | throws | transient | true |
try | typeof | var | void | volatile |
while | with | yield |
三种弹出框
- alert():普通弹出框
1 | alert("普通弹出框"); |
- confirm(“确认框”):确认框
1 | var res = confirm("你是猪吗?"); |
- prompt:输入框
1 | var info = prompt("请输入内容:"); |
四种调试方式
- alert()
- console.log()
- document.write() 和页面中原来的布局在一起出现
- 浏览器断点调试
数据类型
值类型
- number:数字类型
1 | var a = 10; //js不区分浮点什么的 |
- string:字符串类型
1 | var a = '10'; //单双引号都一样 |
- boolean:布尔类型
1 | var a = true; |
- undefined:未定义类型
1 | var a = undefined; |
引用类型
- function:函数类型
1 | var a = function(){}; |
- object:对象类型
1 | var a = {}; |
具体的对象类型
- null:空对象
1 | var a = null; |
- Array:数组对象
1 | var a = new Array(1, 2, 3, 4, 5); |
- Date:时间对象
1 | var a = new Date(); |
- RegExp:正则对象
1 | var a = new RegExp(); |
4、类型转换
- 数字|布尔 转换为 字符串
1 | console.log((true + true) * 10 * false); |
- 布尔|字符串 转换为 数字
1 | var a = '10'; // => 10 |
- 字符串|数字 转换为 布尔
1 | var a = 10 or '10' |
- 自动转换
1 | 5 + null // 5 |
- 特殊产物
1 | // NaN: 非数字类型 |
运算符
算数运算符
前提:n = 5
赋值运算符
前提:x=5,y=5
运算符 | 例子 | 等同于 | 运算结果 |
---|---|---|---|
= | x=y | 5 | |
+= | x+=y | x=x+y | 10 |
-= | x-=y | x=x-y | 0 |
*= | x*=y | x=x*y | 25 |
/= | x/=y | x=x/y | 1 |
%= | x%=y | x=x%y | 0 |
比较运算符
前提:x=5
运算符 | 描述 | 比较 | 结果 |
---|---|---|---|
== | 等于 | x==”5” | true |
=== | 绝对等于 | x===”5” | false |
!= | 不等于 | x!=”5” | fales |
!== | 不绝对等于 | x!==”5” | true |
> | 大于 | x>5 | false |
< | 小于 | x<5 | false |
>= | 大于等于 | x>=5 | true |
<= | 小于等于 | x<=5 | true |
逻辑运算符
前提:n=5
三目运算符
1 | // 结果 = 条件表达式 ? 结果1 : 结果2; |
ES6语法解构赋值
- 数组的解构赋值
1 | let [a, b, c] = [1, 2, 3] |
- 对象的解构赋值
1 | let {key: a} = {key: 10} |
- 字符串解构赋值
1 | let [a,b,c] = 'xyz' |