目录
一、认识编程语言及JavaScript
1、JS不同与HTML,JS是一种编程语言,HTML是标记语言;JS和JAVA的区别,JS是解释语言(好比吃火锅,边吃边涮,同时进行),java是编译语言(首先所有的菜都做好,才能上桌吃饭)
2、编程语言:可以通过类似于人类语言的“语言”来控制计算机,让计算机为我们做很多事情,这样的语言就叫做编程语言。编程语言是用来控制计算机的一系列指令,它有固定的格式和词汇,必须遵守。
3、JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(不需要编译,运行过程中由js解释器运行解释)。
4、JS的作用:表单动态校验(最初的目的),网页特效,服务端开发(Node.js),桌面程序(Electron),App(Cordova),控制硬件-物联网(Ruff),游戏开发(cocos2d-js)。
5、HTML/CSS/JS的关系:html决定网页结构和内容(决定看到什么),相当于人的身体。css决定网页呈现给用户的模样(决定好不好看),相当于给人穿衣服、化妆。JS实现业务逻辑和页面控制(决定功能),相当于人的各种动作。
6、浏览器本身并不会执行JS代码,而是通过JS引擎来执行JS代码。JS引擎执行代码时是逐行解释每一句源码,然后由计算机去执行,所以JavaScript语言归为脚本语言,会逐行解释执行。
7、JS的组成:ECMAScript(JavaScript语法)、DOM(页面文档对象模型)、BOM(浏览器对象模型)
8、JS的三种书写位置
- 行内式的js 直接写到元素的内部
- 内嵌式的js(alert代表弹出一个对话框)
- 外部js script双标签(适合代码量比较大的情况)
9、JS注释
- 单行注释 ctrl+/
- 多行注释 默认的快捷键 shift+alt+a(由于我们的快捷键习惯 在vscode中可把它修改成ctrl+shift+/) 设置-->键盘快捷方式
10、JS输入输出语句
- prompt(info) 浏览器弹出输入框,用户可以输入
- alert(msg) 浏览器弹出警示框
- console.log(msg) 浏览器控制台打印输出信息(给程序员看的)
二、变量
1、变量:用于存放数据的容器。我们可以通过变量名获取数据,甚至修改数据(白话:变量就是一个装东西的盒子)
2、为了能够我们方便去找到某一个变量,我们需要给它起个名字-----变量名。
3、变量的使用(这里我们就不把声明变量和赋值展开写了):
- var 变量名 = 赋值; //这步叫变量的初始化 例:var num = 18; 注意这个等于号和数学里的等于不一样 我们译为把18给num
- console.log(变量名) //输出结果
4、更新变量:一个变量被重新赋值后,它原有的值会被覆盖,变量值将以最后一次赋的值为准。
5、声明变量的特殊情况:
- 只声明不赋值 (结果为undefined)
- 不声明不赋值(直接使用某个变量会报错)
- 不声明直接赋值 (可以正常输出 但不建议使用)
6、变量命名规范(和c语言一样,这里不在多加说明)
三、数据类型
1、为什么需要数据类型:
为了充分利用存储空间。在计算机中,不同的数据所需占用的存储空间是不同的。(在我们js中,只有程序运行过程中,根据等号右边的值来自动确定。另js拥有动态类型,故相同的变量可作不同的类型)
2、数据类型的分类(typeof 可以检测数据类型):
简单数据类型:
- Number(数字型 包括整型值和浮点型)最大值:Number.MAX_VALUE 最小:Number.MIN_VALUE 无穷大:infinity 无穷小:-infinity 非数值:NaN 我们可以利用isNaN()这个方法来判断非数字
- String(字符串型 如'可可',要带引号) 字符串转义符:\n(换行) \\(斜杠\) \'(单引号') \''(双引号'') \t(tab缩进) \b(空格)
- Boolean(布尔值 如true和false) true在运算中当1看 false当0看
- Undefined
- Null(声明了变量为空值 例:var a = null;)
复杂数据类型 object(后续介绍)
3、数据类型转换
转换成字符串:
- 变量.tostring()
- String(变量) 强制转换
- 加号拼接字符串
转换为数字型:
- parseInt(string) 函数 将string类型转换为整数数值型
- parseFloat(string)函数 将string类型转成浮点数值型
- Number()强制转换函数 将string类型转成数值型
- js隐式转换(- * /) 利用算术运算隐式转换成数值型
转换成布尔值
代表空、否定的值都会转换成false,如' ',0,NaN,null,underfined;其余值都会转为true(不做演示)
四、运算符
运算符是用于实现赋值、比较和执行算数运算等功能的符号
- 算式运算符 +(加)-(减)*(乘) /(除)%(取余数)需要注意的是:浮点数在算数运算里会有问题 不能直接拿浮点数来进行相比较是否相等
- 递增和递减运算符 --(递减)++(递增)必须配合变量使用 前置递增(写在变量的前面)++num类似于num = num + 1 后置递增(先表达式返回原值,后自加1) num++ 类似于 num = num + 1 单独使用时效果一样的 递减同理
- 比较运算符 <(小于)>(大于)>=(大于等于)<=(小于等于)==(判等号 会转型)!=(不等号)===(全等 要求值和数据类型都一致)!==
- 逻辑运算符 &&(逻辑与 简称与:一个为假就是false) ||(逻辑或 简称或:一个为真就是true) !(逻辑非 简称非) 逻辑与短路运算:如果表达式1 结果为真 如果表达式1为假 那么返回表达式1 逻辑或短路运算:如果表达式1 结果为真 则返回表达式1 如果表达式1为假 则返回表达式2
- 赋值运算符 =(直接赋值) += 、-=(加、减一个数后在赋值)*=、/=、%=(乘、除、取模后在赋值)
- 运算符优先级 小括号()一元运算符++ -- ! 算数运算符 先*/%后+- 关系运算符> >= < <=相等运算符 == != === !== 逻辑运算符 先&&后|| 赋值运算符 = 逗号运算符,
五、流程控制
流程控制就是来控制我们的代码按照什么顺序去执行
顺序结构
顾名思义,程序会按照代码的先后顺序,依次执行
分支结构
在从上到下的执行过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果
if分支语句
语法结构: if(条件表达式){
//执行语句
}
执行思路:如果if里面的条件表达式结果为真true ,则执行大括号里面的执行语句,如果if表达式结果为假,则不执行大括号里面的语句,则执行if语句后面的代码
if-else双分支语句
语法结构:if(条件表达式){
//执行语句1
}else{
//执行语句2
}
执行思路:如果表达式结果为真,则执行语句1,否则 执行语句2(比起switch语句,它较为灵活,常用于判断范围,当分支比较少时,执行效率较高)
if else if多分支语句
就是利用多个条件来选择不同的语句执行 得到不同的结果 多选一的过程
语法结构:if(条件表达式1){
//执行语句1
}else if(条件表达式2){
//执行语句2
}else if(条件表达式3){
//执行语句3
}else{
//最后的语句
}
执行思路:如果条件表达式1满足就执行语句1,执行完毕后,退出整个if分支语句;如果表达式1不满足,则判断条件表达式2,满足的话,执行语句2,以此类推。如果条件表达式都不满足,则执行else里面的语句(注:多分支语句还是多选一,最终只有一条语句执行;else if里面的条件是可以任意多个的)
三元表达式
有三元运算符组成的式子我们称为三元表达式
语法结构: 条件表达式 ? 表达式1 : 表达式2
执行思路:如果条件表达式为真,则执行表达式1,否则执行表达式2
switch语句
它基于不同的条件来执行不同的代码,当要针对变量设置一系列的特定值的选项时,就可以用switch。
语法结构: switch(表达式){
case values1:
执行语句1;
break;
case values2:
执行语句2;
break;
……
default:
执行最后的语句;
}
执行思路:利用我们的表达式的值和case后面的选项值相匹配,如果匹配上,就执行该case里面的语句,如果都没有匹配上,那么执行default里面的语句。(注:表达式里经常放变量,表达式的值和case里面的值要全等的时候才能匹配,case后一定要放break)
循环结构
目的:可以重复执行某些代码