001 Javascript(001 - 024)
[A] Javascript 的组成
1. ECMAScript
2. DOM 文档
3. BOM 浏览器
【注】
1. 所有的JS代码均在<javascript></javascript>内部进行编写,该标签放在html的head标签中
2. 可以书写多个jascript标签,代码将自上而下运行
示例:
<script type="text/javascript"> alert("hello world!!") </script>
外部引入js文件:此时其内部书写的js代码将被自动忽略
<script type="text/javascript" src="demo.js"></script>
[B] Javascript 输出方法
1. alert("......")
在当前页面弹出信息
2. document.write("......")
在当前页面中显示文本信息
3. console.log(".......")
在页面终端上显示,主要用于程序员分析代码使用
[C] JavaScript 注释
1. 单行注释
方法:// 注释信息
快捷键:ctrl + /
2. 多行注释
方法:
/*
注释信息
*/
快捷键:一般为 ctrl + shift + / 根据笔记本有所不同
【注】JavaScript 语句在书写时,每一行 js 代码结尾需要添加 ; 说明该语句结束,便于后面进行代码压缩
代码压缩:去掉编写代码的时候所包含的空格,tab键和换行。
[D] 常量与变量
常量:值不可以被修改的量
基本数据类型
1. 数字
类型:number
示例:10 -100 2.7
2. 布尔值
类型:boolean
示例:true false
3. 字符串
所有带双引号或者单引号的都叫做字符串(单引号与上引号没有区别,主要用于嵌套结构使用)
复合 / 引用数据类型 (后续专门章节讲解)
object
特殊数据类型
4. null 空
5. undefined 未定义
6. NaN not a number
变量:值可以被修改的量
计算机的组成:
磁盘 内存 CPU/GPU
编写的代码,数据保存在磁盘上,而CPU/GPU只能从读取内存中的程序,故程序的执行过程是,程序从磁盘读取到内存中,内CPU/GU运行。
【关键信息】内存中有空间,程序本质上是在内存中运行的,编程就是合理的分配内存
1. 变量声明 变量在使用前必须先声明
var 变量名;
2. 初始化:声明变量的时候,直接给这个变量赋值,叫做初始化。
var a = 10;
3. 未被初始化的变量,系统默认给它赋值 undefined。
[E] 变量的命名与弱引用
标识符:所有用户自定义的名字叫标识符。
变量名就是一种标识符
命名规则:
1. 只能有字母,数字,下划线和美元符号($)组成;
2. 不能以数字开头
3. 不能使用关键字和保留字
4. 大小写敏感
age 和 Age 是两个变量名
5. 见名思意,即名字和内容最好匹配
6. 驼峰式命名 和 下划线式命名
ClassGroupName class_group_name
JS中变量是一种弱引用类型,即变量被赋值成什么数据类型,它就是什么数据类型;更换成另一种数据类型又变成另一种数据类型。
【注】不建议改变当前数据的类型。
输出数据类型:
typeof name 输出变量name的类型
[F] 进制转换
十进制 0 - 9
二进制 0 和 1
八进制
十六进制
十进制转二进制:除 2 取余法
二进制转换成八进制
规则:从右往左数,每三位一组,不足三位的用0补齐,最后将每一组数单独转换成八进制数
二进制转换成十六进制
规则:从右往左数,每三位一组,不足三位的用0补齐,最后将每一组数单独转换成十六进制数
[G] XMind思维导图的使用
待议
[H] 算术运算符
1. 算术运算符
+ - * / %(取余)
2. 关系运算符
> >= < <= == (等于) != (不等于) ===(恒等于) !==(不恒等于)
3. 逻辑运算符
&& || !
4. 赋值运算符
= += -= *= /*
【注】不同数据类型之间不能进行计算
[ I ] 强制数据类型转换
1. Boolean() 将其他数据类型转换成布尔值
口诀:非零即真,非空即真
2. Number() 将其他数据类型转换成数字
【注】只有纯数字组成的字符串,才能转换成数字,其他的都是NaN,即 not a number
3. parseInt() 取整,忽略小数点后面的数字,这与四舍五入有区别
【注】对于字符串,会从左到右提取数字的整数,若没有则为NaN,如:parseInt("19s4n4")——>19,parseInt("v19s4n4")——>NaN
将制定进制的字符串数值转换成十进制数
parseInt("100101010", 2) 将二进制的"100101010" 转换成十进制数
parseInt("352736452734", 8) 将八进制的"352736452734" 转换成十进制数
4. parseFloat() 取浮点数
[J] 关系运算符
关系运算符运算的结果均为布尔值
当两侧操作数不同时,遵循以下规则:
1. 如果两侧操作数均为数值,直接比较
2. 如果两侧操作数都是字符串,测比较两个字符串对应的ASCII编码值(挨个比较)
3. 如果其中一个操作数为数字,则现将另一个转换成数字(自动数值类型转换),在进行比较
在相等和不等的比较时,遵循以下规则:
4. 若其中一个操作数为布尔值,则先转换成数值,false 转成 0, true 转成 1
5. 其中一个操作数为字符串,则先转换成数值在进行比较
6. 其中一个操作数为NaN,则 == 返回 false,!= 返回 true ;并且 NaN和自身不等。
7. 当比较 恒等(===) 和 不恒等(!==) 时,必须值和类型都相等时,才表示恒等。
[K] 逻辑运算符
1. 与运算
格式:
表达式1 && 表达式2
规律:只有当两个表达式都为true‘时,返回值才是真
短路操作:
当表达式1为false时,直接返回false,不再执行后面的表达式2
2. 或运算
格式:
表达式1 || 表达式2
规律:只有当两个表达式都为false时,返回值才是假
短路操作:
当表达式1为true时,直接返回true,不再执行后面的表达式2
3. 非运算
格式:
!表达式
规律:将现有值先转换成布尔值,然后取反
非0即真
[L] 流程控制语句
1. 顺序结构:代码自上而下顺序执行
2. 选择结构 / 分支结构 / 选择结构:根据不同的条件,执行不同的操作
if(判断条件){ 执行语句;(判断条件结果为true时执行) } else{ 执行语句;(判断条件结果为false时执行) }
【注】还有 else if 语句进行双分支结构判断
if(判断条件1){ 执行语句;(判断条件1结果为true时执行) } else if(判断条件2){ 执行语句;(判断条件2结果为true时执行) } else{ 执行语句;(判断条件2结果为false时执行) }
【注】switch-case 判断结构
switch(表达式){ case 常量1: 执行语句1; break; case 常量2: 执行语句2; break; case 常量3: 执行语句3; break;
default:
执行语句4;
break;
}
3. 循环结构:重复去做一件事情
1. while循环
while(判断条件){ 执行语句;(当判断条件结果为真时执行) }
2. do-while循环
do{ 执行语句;(当判断条件结果为真时执行) }while(判断条件)
区别:一个是先判断,再循环,一个是先循环再判断
3. for循环
for(var i = 0; 1<=100; i++){ 代码块; }
【拓展】
1. break 跳出当前循环体
2. continue 结束本次循环,进行下一轮循环
[M] 三目运算符
格式:表达式1? 表达式2:表达式3
执行方式:
1. 先判断表达式1是否为真
2. 若表达式1为真,则直接去执行表达式2
3. 若表达式1为假,则直接去执行表达式3
【注】相当于多分枝语句