一、JavaScript
运行在客户端(浏览器)的编程语言, 实现人机交互效果
作用:
-
网页特效 (监听用户的一些行为让网页作出对应的反馈
-
表单验证 (针对表单数据的合法性进行判断
-
数据转换 (获取后台的数据, 渲染到前端
-
服务器编程 (node.js)
组成:
-
ECMAScript
- JavaScript语言基础
- 规定了js基础语法基础知识 (如:变量 分支语句 循环语句 对象等
-
Web APIs
-
DOM
- 页面文档对象模型
- 操作文档, 比如对页面元素进行移动, 大小, 添加删除等操作
-
BOM
- 浏览器对象类型
- 操作浏览器, 比如页面弹窗, 检测窗口宽度, 存储数据到浏览器等等
-
书写位置
-
内联JavaScript
- 代码写在标签内部 (了解即可)
-
内部JavaScript
- 直接写在HTML文件里, 用script标签包住
- script标签写在body标签里面, 上面
-
外部JavaScript
- 代码写在以 .js结尾的文件里面
- 通过script标签引用到html页面中
注释
-
单行注释
- Ctrl + /
- 开发人员看
-
块注释(多行注释)
- ctrl + Alt + a
结束符
- 代表语句结束
- 英语分号 " ; "
- 可写可不写, 要么都写 要么都不写
- 换行(enter) 会被识别成结束符, 所以一个完整的语句不能手动换行
- so, 平时写js代码时可不写分号, 记得换行就行
输入和输出语法
-
输出语法
-
document.write('页面内容');
- 向body标签中输出内容
- 如果输出的内容写的是标签, 也会解析成网页元素
-
alert('警示框弹出内容');
- 页面弹出警示对话框
-
console.log('控制台输出内容');
- 控制台输出语法, 程序员调试使用
-
-
输入语法
-
prompt('提示内容');
- 显示一个对话框, 对话中包含一条文字信息,用来提示用户输入文字
-
字面量(literal)
- 在计算机中描述的 事 / 物
- 看到它就知道是什么类型, 如 123 是数字
二、变量
计算机存储数据的 "容器" (装东西的盒子)
注意: 变量不是变量本身, 它们仅仅是一个用于存储数据的容器. 可以理解为一个个用来装东西的纸箱子'
变量的使用
-
声明变量
- let 变量名
-
变量赋值
- 变量名 = 变量值
-
变量初始化
- let age = 18;
-
声明多个变量
- 统一声明, 用逗号隔开
- let a=1, b=2, c=3
-
更新变量
- 重新给变量赋值, 不能重新定义变量
- let 不允许多次声明一个变量
案例
- 结合输出语句的简单案例
- <script>
// 需求:浏览器中弹出对话框:请输入姓名
// 然后在HTML文档中输出刚才用户输入的姓名
/*
步骤:
1. 先声明一个变量存储用户输入的数据
2. 利用输出语句在文档中输出已经存储了数据的变量
*/
let username = prompt("请输入姓名")
document.write(username)
</script>
- 交换变量
<script>
let user1 = '用户1'
let user2 = '用户2'
console.log('交换前user1:' + user1 + '\n交换前user2:' + user2);
// 临时变量
let temp
// 交换
temp = user1
user1 = user2
user2 = temp
console.log('交换后user1:' + user1 + '\n交换后user2:' + user2);
</script>
变量的本质
-
内存
- 计算机中存储数据的地方, 相当于一个空间
-
变量
- 是程序中内存中申请的一块用来存放数据的空间
变量命名规则与规范
-
规则
-
必须遵守, 不遵守报错
-
-
不能用关键字,
- 关键字: 有特殊含义的字符, JavaScript内置的一些英语词汇 例如: let、var、if、for等
-
-
- 只能用下划线、字母.、$组成, 且不能以数字开头
-
- 字母严格区分大小写, 如Age和age不是一个变量
-
-
规范
- 建议 不遵守不会报错, 但不符合业内通识
-
- 起名要有意义
-
-
遵守小驼峰命名法
- 第一个单词首字母小写, 后面每个单词首字母大写, 例如: userName
-
-
简单案例
<script>
// 需求:让用户输入自己的名字、年龄、性别,再输出到网页
let userName = prompt('请输入姓名')
let userAge = prompt('请输入年龄')
let userSex = prompt('请输入性别')
document.write(userName)
document.write(userAge)
document.write(userSex)
</script>
let和var的区别
-
let为了解决var的一些区别
-
var声明
-
- 可以先使用. 再声明 ( 不合理 )
-
- var声明过的变量可以重复声明 ( 不合理 )
-
- 比如变量提升、全局变量、没有块级作用域等等
-
-
结论:以后声明变量统一使用let
变量拓展: 数组 [ ]
-
数组 (Array) 是一种可以按顺序保存多个数据的变量
-
声明数组
let arr = ['李狗蛋', '张翠花', '赵铁柱'] -
注意
-
- 数组是按顺序保存,所以每个数据都有自己的编号
-
- 计算机中的编号从0开始,所以小明的编号为0,小刚编号为1,以此类推
-
- 在数组中,数据的编号也叫索引或下标
-
- 数组可以存储任意类型的数据
-
-
使用数组
-
取值语法
-
- 通过下标取数据
-
- 取出来是什么类型的, 就根据这种类型特点来访问
-
- 输出数组长度: arr.length
-
-
小案例
<script>
let arr = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期日', '星期日']
console.log(arr[6]);
console.log(arr[arr.length - 1]);
</script>
三、数据类型
数据类型为何要分类?
- 计算机世界中的万事万物都是数据
-
- 更加充分和高效的利用内存
-
- 也更加方便程序员的使用数据
基本数据类型
-
number 数字类型
- 整数
- 小数
- 整数
- 负数
- e 科学计数法
- Infinity 无穷大
-
- infinity 无穷小
-
string 字符串类型
-
- 单引号包裹 "李狗蛋"
-
- 双引号包裹 '李狗蛋'
-
- 反引号包裹
李狗蛋
- 反引号包裹
-
字符串里面可以嵌套引号, 但是要区分开 外单内双或外双内单 不怕麻烦的话用转义字符\
-
字符串拼接
-
' 字符串1 ' + ' 字符串2 '
-
模板字符串
$ { let } -
案例
-
-
<script>
let name = prompt('请输入您的姓名')
let age = prompt('请输入您的年龄')
document.write(`大家好我是${name},今年${age}岁`)
</script>
-
boolean 布尔型
- 表示肯定或否定时在计算机中对应的是布尔类型数据
- true 真
- false 假
-
undefined 未定义型
- 只声明了变量 未赋值
- 只有一个值 undefined
-
null 空类型
- 变量赋值了 但是内容为空
- 将来有个变量里面存放了一个对象, 但是对象还没创建好, 可以先给个null
- 例: let object = null;
-
检测数据类型
-
typeof
-
后面空格跟上数据或变量
-
-
引用数据类型
- object 对象
- function 函数
- array 数组
四、类型转换
隐式转换
显示转换
-
转换为数字型
-
Number ( 数据 )
- 如果内容有非数字 , 则转换失败的结果为NaN
- NaN也是number类型的数据, 代表非数字
-
parseInt ( 数据 )
- 只保留整数
- 数字前面有非数字, 则返回NaN
- 数字后面有非数字则自动删除掉 ( 过滤单位 )
-
parseInt ( 数据 )
- 可以保留小数
- 数字前面有非数字, 则返回NaN
- 数字后面有非数字则自动删除掉 ( 过滤单位 )
-
-
转换为字符串型
- String ( 数据 )
- 数据.toString( 进制 )