webveuje/javascriptpress/1.javascript基础.md
2020-12-31 09:56:58 +08:00

444 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[[toc]]
# javascript 基础
## 简介
javascript 主要是由
- ECMAScript
- DOM
- BOM
> 其中 dom 与 bom 由 浏览器提供
> dom指的是html页面上的标签
> bom 是浏览器提供的接口
## ECMAScript
ECMAScript 是一种语言规范 javascript就是基于这个规范来编写的。
使用语言的时候必须遵循这个规范来进行开发
他包括
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
## DOM
文档对象模型 是由浏览器提供的一个接口 能在javascript中可以操作页面
## BOM
浏览器对象模型 是浏览器提供的一些对于浏览器与用户界面的一些接口 比如可以操作浏览器高度 宽度 与位置等等
## 在页面中使用javascript
demo1
```html
<html>
<head>
<title>javascript演示</title>
<script>
alert("hell world");
</script>
</head>
<body>
打开页面的时候会出现一个弹框 内容为hello world
</body>
</html>
```
> 实际运行
![image-20201229113118362](1.javascript基础.assets/image-20201229113118362.png)
在html中使用javascript是写在`<script></script>`标签中中间写javascript代码
然后里面是有一个alert("hello world") 这是一个函数 名字叫alert 运行的时候接受一个参数 弹出的信息就是这个参数的文字 比如改成你好世界
demo2
```html
<html>
<head>
<title>javascript演示</title>
<script>
alert("你好世界");
</script>
</head>
<body>
打开页面的时候会出现一个弹框 内容为 你好世界
</body>
</html>
```
> 运行结果
![image-20201229113512817](1.javascript基础.assets/image-20201229113512817.png)
## 什么是函数
上面用到了一个函数 但是并没有函数定义 为什么能使用?
因为浏览器会提供一些预制函数 alert就是浏览器提供的 所以我们并不用定义函数就能使用
### 手动定义一个函数
demo3
```html
<html>
<head>
<title>javascript演示</title>
<script>
function hello(){
alert("你好")
}
hello()
</script>
</head>
<body>
打开页面的时候会出现一个弹框 内容为 你好
</body>
</html>
```
> 页面显示
![image-20201229113911577](1.javascript基础.assets/image-20201229113911577.png)
定义函数使用
```javascript
function 名字(){
函数体内容
}
```
调用是使用 名字 + ()
上面的例子中定义了一个 hello的函数 内容是alert("你好")
运行就是使用hello() 执行这个函数
demo4
```html
<html>
<head>
<title>javascript演示</title>
<script>
function hello(){
alert("你好")
}
hello()
function bay(){
alert("再见")
}
bay()
</script>
</head>
<body>
打开页面的时候会出现一个弹框 内容为 你好 然后会出现 再见
</body>
</html>
```
> 结果
![image](1.javascript基础.assets/Peek 2020-12-29 11-45.gif)
## 变量
alert的时候 括号中填了一句话 但是我们自己写的就没有 那如何实现呢? 想要实现的话 需要先了解一下javascript的变量
什么叫变量呢? 就是可以改变的量 比如把灯的开与关比作 0 和 1 的话 开关的状态就是可以改变的 当打开的时候是1 关闭的时候是0
有变量就会有常量 常量就是不可以改变的
如何创建变量
```javascript
var name = "我的名字";
var age;
age = 18;
```
创建变量是用var 关键字 创建规则是 `var 变量名 = 变量值` 如果不想赋值初始值的话 `var 变量名` 就是创建一个空的变量 之后用到的时候直接用变量名就可以 因为变量只需要声明一次 就是可以先声明站位 之后需要给赋值的时候再给值
```html
<html>
<head>
<title>javascript演示</title>
<script>
var name = "你好";
alert(name);
</script>
</head>
<body>
</body>
</html>
```
> 运行之后页面会弹出内容为 你好 的弹出框
比如把你好改成hello world
```html
<html>
<head>
<title>javascript演示</title>
<script>
var name;
name = "hello world";
alert(name);
</script>
</head>
<body>
</body>
</html>
```
> 运行之后页面会弹出内容为 hello world 的弹出框
```javascript
解释一下
定义一个变量 名字叫 name 值是 "hello world"
var name = "hello world";
让浏览器弹出name
alert(name);
为什么这个写name 弹出的是 hello world 而不是 name
注意下 name 是没有加引号的 没有加引号的字符串会被认为是关键字 自定义的变量或函数
```
例如
```html
<html>
<head>
<title>javascript演示</title>
<script>
var name = "hello world";
alert("name");
</script>
</head>
<body>
</body>
</html>
```
> 这时候弹出的就是 name 因为加了双引号 被认定为字符串 而不是变量了
为什么" 内容 " 就被认定为字符串呢?
### javascript中的变量类型
#### 字符串 string
先看一下字符串 他是用 "" 包裹的内容 就是被认定为是字符串
比如 "我的名字是xxx" 这一段就会认定为是字符串
name 这不加引号就会被认定为不是字符串 是关键字或者自定义的变量或函数
所有的字符串都是用""或''包裹的
为什么又多了个’‘号呢 但是这两个的效果是一样的
```javascript
var name = "name";
var age = '18';
这两个效果是一样的都是字符串 一个是 name 一个是 18
```
```html
<html>
<head>
<title>javascript演示</title>
<script>
var name = "name";
var age = '18';
alert(name);
alert(age);
</script>
</head>
<body>
</body>
</html>
```
### 数字 number
有字符串的时候就应该有数字 那么数字是如何定义的呢?
```javascript
var age = 18; 这是一个数字18
var sex = 1.2 这是一个小数 1.2 在程序里面叫做浮点数
```
只要输入数字就可以 不用加引号 这个就是一个数字
上面说只要不加引号的都会被认定为关键字或者是方法或变量 但是这个 18 并没有加为什么没被认定为是变量或者其他呢?
### 命名规范
命名就是你给自己的方法或者变量起的名字 规范是 命名必须用 字母 $ _
- 26个英文字母
- $ 美元符号
- _ 下划线
这三种开头的才会被认定为变量
例如
```javascript
var name;
var $age;
var _name;
```
也可以组合 例如
```javascript
var name$n_jhzshd
```
只要是这三种符号组合的符合规范的情况都是可以的
```javascriot
var na me;
不符合 因为有空格
var na|me
不符合 因为有 |
```
等等 只要不在三种之类的符号 都不是正确的命名
### 数字相加
已经知道了 什么是 数字 什么是 字符串了
数字就是正常的 小数 整数 或者其他进制的数字 其他进制一般用不到 只是写法有区别 这个就不说了
字符串就是用引号包裹的一段文字 可以用双引号 也可以用单引号
那么数字是如何相加呢?
```javascript
var num1 = 10;
var num2 = 15;
var sum = num1 + num2;
alert(sum);
```
这段代码放到页面上执行 就会弹出 25
或者可以
```javascript
var sum = 10 + 15;
alert(sum);
```
或者直接
```javascript
alert(10 + 15);
```
## 操作符
### 加法操作符
可以将两个变量的值和两个数字等相加
> 值有是什么? 变量是我们定义的名字 值就是变量的内容 比如
```javascript
var num = 10;
变量是mum 值是 10
var name = "helloworld"
变量是name 值是 "helloworld"
```
加法是将两个值相加 数字是返回数学运算之后的值
比如
```javascript
1+1 是2
10 + 15 是35
12 + 13 是25
1.5+2.5 是4
```
#### 赋值顺序
上面让变量接受加法运算的值的时候 变量在前 然后 = 运算 因为在程序中 给变量赋值是将等于号 后面的值给前面的变量 而不是像我们写数学运算的时候 前面是公式 后面是结果
```javascript
var num = 1+1; 正确
1+1 = var num; 错误 因为这样操作会将 num 赋值给1+1 但是1+1并不是变量
```
### 减法操作
有加法一定有减法 减法跟加法一样
```javascript
var num1 = 10;
var num2 = 15;
var sum = num1 - num2;
alert(sum);
```
这个弹出的是 -5 因为 10 - 15 就是-5
```javascript
var num1 = 20;
var num2 = 15;
var sum = num1 - num2;
alert(sum);
```
这个就会弹出 5
剩余就是跟+ 一样的
### 乘法操作
乘法操作跟加减是一样的
```javascript
var num1 = 20;
var num2 = 15;
var sum = num1 * num2;
alert(sum);
```
这个就会弹出300
### 除法
```javascript
var num1 = 30;
var num2 = 15;
var sum = num1 / num2;
alert(sum);
```
这个就会弹出2
```javascript
var num1 = 15;
var num2 = 6;
var sum = num1 / num2;
alert(sum);
```
这个就会弹出 2.5
### 组合起来
比如一个计算中 既有加法又有减法还有乘法除法是怎么样的呢?
```javascript
var sum = 1 + 2 * 3 / 4;
alert(sum);
```
这个会输出什么呢? 计算的时候会怎么计算呢 是先计算1 + 2 然后得3 再乘以3 得9 再除以4吗
并不会 因为计算中会有优先级 计算的时候也是先计算乘除法 再计算加减法
```javascript
var sum = 1 + 2 * 3 / 4;
alert(sum);
```
会输出2.5
但是计算顺序如何呢? 这个计算中* 和/ 哪个先计算呢?
这在编程语言中叫做运算符的优先级 哪个优先级高就先计算哪一个 如果相同的话就依照顺序从左到右的方式计算
比如 1 + 2 * 3 / 4
就会先计算 2 * 3 然后拿到结果 / 4 在 用1 相加
- 2 * 3 = 6
- 6 / 4 = 1.5
- 1 + 1.5 = 2.5
再例如
```javascript
2 * 2 + 4 + 2 / 2
```
这个计算顺序
- 2 * 2 = 4
- 2 / 2 = 1
- 4 + 4 + 1 = 9
这就是操作符的优先级 哪个优先级高就会先计算哪个 如果相同就按从左到右的顺序操作
`+ - * / 的优先级是 * / 高于 + -`
`* 与 / 相同`
`+ 与 - 相同`
## 总结
总共写了
- alert 让浏览器弹出一个对话框
- var 定义变量
- 变量赋值
- 字符串
- 数字
- 数字 加法减法乘法除法
- `+ - * /` 的运算符与优先级顺序
## 作业
- 定义一个变量 赋值为 "这是我的弹出框" 然后让浏览器弹出这个内容
- 定义两个变量 分别赋值 5 和 6 弹出相加结果
- 定义两个数字变量 值随意 弹出 两个变量相乘结果
- 写出 `10 + 5 / 5 * 6 - 10` 的运算顺序
- 自己了解一下 javascript操作符优先级