Web/04-JavaScript基础/02-JavaScript书写方式:hello world.md
2021-10-31 15:55:35 +08:00

343 lines
10 KiB
JavaScript
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.

## hello world开始写第一行JavaScript代码
JS 代码的书写位置在哪里呢这个问题也可以理解成引入 JS 代码有哪几种方式有三种方式和CSS的引入方式类似
1. **行内式**写在标签内部
2. **内嵌式**内联式写在head标签中
3. **外链式**引入外部JS文件
### 方式1行内式
**代码举例**
```javascript
<input type="button" value="点我点我" onclick="alert('千古壹号 Hello 方式1')" />
```
完整的可执行代码如下
```html
<!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>
<input type="button" value="点我点我" onclick="alert('千古壹号 Hello 方式1')" />
</body>
</html>
```
**分析**
- 可以将单行或少量 JS 代码写在HTML标签的事件属性中 on 开头的属性比如放在上面的 `onclick`点击事件中
- 这种书写方式不推荐使用原因是可读性差尤其是需要编写大量 JS代码时很难维护引号多层嵌套时也容易出错
- 关于代码中的引号在HTML标签中我们推荐使用双引号JS 中我们推荐使用单引号
### 方式2内嵌式
我们可以在 HTML 页面的 `<body>` 标签里放入`<script type=”text/javascript”></script>`标签对并在`<script>`里书写JavaScript 代码
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 在这里写 js 代码
alert('千古壹号 hello 方式2');
console.log('qianguyihao hello 方式2');
</script>
</body>
</html>
```
**分析**
- text表示纯文本因为JavaScript代码本身就是纯文本
- 可以将多行JS代码写到 `<script>` 标签中
- 内嵌式 JS 是学习时常用的方式
### 方式3外链式
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<!-- 外链式:引入外部的 js 文件:这个 utils.js 文件与当前的 html 文件,处于同一级目录 -->
<script src="utils.js"></script>
</body>
</html>
```
**分析**
- 上面这段代码依然是放到body标签里可以和内嵌的JS代码并列
- 上方代码的 script 标签已经引入了外部JS文件所以这个标签里面不可以再写JS代码
**总结**
我们在实战开发中基本都是采用方式3因为将 html 文件和 js 文件分开的方式有利于代码的结构化和复用符合高内聚低耦合的思想很少会有人把一大堆 JS 代码塞到 html 文件里
### 关于 window.onload先加载最后执行
上面的三种方式有个共同的地方是JS代码都是写在`</body>`中的准确来说是在页面标签元素的后面在body**结束标签**的前面
为什么一般是按这样的顺序来写呢这是因为浏览器默认会**从上至下**解析网页这句话很重要当你**需要通过 JS 来操作界面上的标签元素**的时候假如将 JS 代码`<script>`标签写到`<head>`标签中或者写在页面标签元素的前面那么这样的 JS 是无效的因为标签元素在此时都还没来得及加载自然无法操作这个元素
**重点来了**
当你**需要通过 JS 来操作界面上的标签元素**的时候如果实在想把 JS 写到`<head>`标签中那么就必须用 window.onload 将JS代码进行包裹代码格式如下
```html
<head>
window.onload = function(){
// 这里可以写操作界面元素的JS代码等页面加载完毕后再执行
...
}
</head>
```
**window.onload**的含义是等界面上所有内容都加载完毕后不仅要等文本加载完毕而且要等图片也要加载完毕再执行`{}`中的代码做到了**先加载最后执行**也就是**等页面加载完毕后再执行**
当然我们可以根据具体需求 window.onload 写在 `<head>`标签中或者写在`<script>`标签中
## JavaScript 一些简单的语法规则
学习程序是有规律可循的程序会有有相同的部分这些部分就是一种规定不能更改我们称之为语法我们先来了解一个简单的语法规则
1JS 对换行缩进空格不敏感每一条语句以分号结尾
也就是说
代码一
```html
<script type="text/javascript">
alert("今天蓝天白云");
alert("我很高兴");
</script>
```
等价于代码二
```html
<script type="text/javascript">
alert("今天蓝天白云");alert("我很高兴");
</script>
```
2每一条语句末尾要加上**分号**虽然分号不是必须加的但如果不写分号浏览器会自动添加分号导致消耗一些系统资源和性能甚至有可能**添加错误**
3所有的符号都是英文的比如**括号**引号分号
如果你用的是搜狗拼音**建议不要用shift切换中英文**可以在搜狗软件里进行设置不然很容易输入中文的分号建议用ctrl+space切换中英文输入法
4JS 严格区分大小写
## 前端代码的注释
我们不要把 HTMLCSSJavaScript三者的注释格式搞混淆了
### HTML 的注释
```html
<!-- 我是注释 -->
```
### CSS的注释
```html
<style type="text/css">
/*
我是注释
*/
p{
font-weight: bold;
font-style: italic;
color: red;
}
</style>
```
注意CSS只有`/* */`这种注释没有`//`这种注释而且注释要写在`<style>`标签里面才算生效
### JavaScript 的注释
单行注释
```js
// 我是注释
```
多行注释
```js
/*
多行注释1
多行注释2
*/
```
补充VS Code中单行注释的快捷键是Ctrl + /Alt + Shift + A
当然如果你觉得多行注释的默认快捷键不方便我们还可以修改默认快捷键操作如下
VS Code --> 首选项 --> 键盘快捷方式 --> 查找注释这两个字 --> 将原来的快捷键修改为Ctrl + Shift + /
## JavaScript 输出语句
### 弹窗alert()语句
我们要学习的第一个语句就是alert语句
代码举例如下
```html
<!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>
<script>
alert('千古壹号');
</script>
</body>
</html>
```
**alert**英文翻译为警报的用途**弹出警告框**它会在弹窗中显示一条信息并等待用户按下 OK
`alert("")`弹窗的效果如下
![](http://img.smyhvae.com/20180116_1735.gif)
这个弹窗在IE浏览器中长这样
![](http://img.smyhvae.com/20180116_1906.png)
上面的代码中如果写了两个alert()语句则网页的效果是弹出第一个警告框点击确定后继续弹出第二个警告框
### 弹窗confirm()语句含确认/取消
代码举例如下
```
var result = confirm('你听说过千古壹号吗?');
console.log(result);
```
代码运行后会在页面上显示一个弹窗弹窗上有确认取消两个按钮点击确定返回 `true`点击取消返回 `false`
效果如下
![20211031-1537](http://img.smyhvae.com/20211031-1537.gif)
### 弹出输入框prompt()语句
`prompt()`就是专门弹出能够让用户输入的对话框用得少测试的时候偶尔会用
JS代码如下
```javascript
var a = prompt("请随便输入点什么东西吧");
console.log(a);
```
上方代码中用户输入的内容将被传递到变量 a 里面并在控制台打印出来
效果如下
![](http://img.smyhvae.com/20180116_2230.gif)
**alert()和prompt()的区别**
- alert() 语句中可以输出数字和字符串如果要输出字符串则必须用引号括起来prompt()语句中用户不管输入什么内容都是字符串
- prompt() 会返回用户输入的内容我们可以用一个变量来接收用户输入的内容
### 网页内容区域输出document.write()语句
代码举例
```
document.write('千古前端图文教程');
```
页面效果
![20211031_1543](http://img.smyhvae.com/20211031_1543.png)
### 控制台输出console.log() 打印日志
`console.log()`表示在控制台中输出console表示控制台log表示输出括号里可以写字符串数字变量
控制台是程序员调试程序的地方比如使用 console 语句打印日志测试程序是否运行正常
在Chrome浏览器中按F12即可打开控制台选择console即可看到打印的内容
`console.log("")`效果如下
![](http://img.smyhvae.com/20180116_2008.gif)
console语句可以设置不同的打印等级
```js
console.log("千古壹号1"); //普通打印
console.warn("千古壹号2"); //警告打印
console.error("千古壹号3"); //错误打印
```
效果如下
![20211031_1552](https://img.smyhvae.com/20211031_1552.png)
上图中不同的打印等级区别不大只是颜色背景上的区别方便肉眼区分过滤信息
普通人是不会在意控制台的但是有些网站另藏玄机比如百度首页的控制台悄悄地放了一段招聘信息的彩蛋挺有意思
![](http://img.smyhvae.com/20180116_2010.png)
做前端开发时需要经常使用控制台做调试我们甚至可以直接在控制台输入 JS 语句然后打印执行结果
**总结**alert() 主要用来显示消息给用户console.log() 用来给程序员做调试用
## 我的公众号
想学习**更多技能**不妨关注我的微信公众号**千古壹号**
扫一扫你将发现另一个全新的世界而这将是一场美丽的意外
![](http://img.smyhvae.com/20200102.png)