计算机基础:
1. 计算机的组成:
- 硬件:
输入设备:鼠标,键盘,摄像头
输出设备:显示器,打印机,投影仪
CPU: 负责处理数据与运算
硬盘和内存: 负责存储数据 硬盘永久存储数据,内存暂时存储数据 - 软件:
系统软件:Windows Linux macOS
外部软件:Word QQ
2. 数据存储单位
- 位(bit) 1bit可以保存一个0或1(最小的存储单位)
- 字节(Byte) 1B=8b
- 千字节(KB) 1KB=1024B
- 兆字节 1MB=1024KB
- 吉字节 1GB=1024MB
- 太字节 1TB=1024GB
3.程序的运行
打开某个程序时,先从硬盘中把程序的代码加载到内存中。然后,CPU执行内存中的代码
之所以需要内存,是因为CPU运行太快了,如果只从硬盘中读取数据,会浪费cpu性能
4.数据的存储
计算机内部使用二进制0和1来表示数据
所有数据,包括文件,图片最终都以二进制的形式放在硬盘里,安装程序指的是程序文件复制到硬盘中。
5. 解释型语言和编译型语言
计算机不能直接理解任何除了机器语言以外的语言,要利用翻译器将程序语言翻译为机器语言
翻译器翻译的方式有两种:编译和解释,两种方式区别在于翻译的时间点
不同
编译器是在代码之前进行编译,生成中间代码文件,例如:编译型语言Java,通过Java编译器javac.exe进行编译,得到中间代码文件(以.class为后缀)
解释器是在运行时进行一边解释,一边执行
JavaScript(简称JS)
1.引入
- JavaScript是一种运行在客户端的脚本语言(脚本语言就是不需要编译),与HTML 代码结合在一起,通常由浏览器解释执行
跨平台性。
在HTML 页面中JS 的执行依赖于浏览器本身,与操作环境无关。
基于对象
解释型 要解释,运行过程中由js解释器(又称js引擎)逐行进行解释并执行
弱类型 变量在使用前不需声明,解释器在运行时动态定义其数据类型 - HTML决定网页结构和内容(决定看到什么),相当于人的身体(标记语言,描述类语言)
CSS决定网页的最终呈现的模样(决定好不好看),相当于给人穿衣服(标记语言 ,描述类语言)
JS 实现业务逻辑和页面控制(决定功能),相当于人的各项动作(脚本语言,编程类语言) - 浏览器执行js:
浏览器分两部分:渲染引擎和JS引擎
渲染引擎:用来解析HTML和CSS,俗称内核,例如chrome浏览器的blink
JS引擎:又称js解释器,会逐行进行解释每一句源码,就是将其转为机器语言,然后计算机去执行,每解释一句,就执行一句 - JS的组成:
1. ECMAScript 就是 JavaScript语法,ECMAScript是一种语言,它规定了JS的编程语法和核心知识
2. DOM 就是页面文档对象模型
3. BOM 就是浏览器对象模型
2. 基础语法的学习
1. JS代码的位置
JS代码放在HTML的页面中,代码的位置类比于CSS:
1.行内式的js 直接将少量的js代码写在HTML标签的事件属性中(以on开头的属性)例如 onclick ,作为事件属性的属性值。
但可读性差,特殊情况使用
2.内嵌式的js, 一般写到head标签内部的双标签script的内部
将JS代码嵌入在<script>
标记中。
格式:
<script type="text/javascript">
JS语句
</script>
注意:
<script>标记可以嵌套在<body> 或<head>中;
<script>标记可以出现多次;
3.外部的js:先新建一个后缀名为 .js 的文件,然后在html页面中的head中的 签script的开始标签中写入src=" .js",(后缀名为 .js 的文件的地址),双标签script的内部不允许写内容
<title>Document</title>
<script src="a.js">
// alert('你好呀')
</script>
</head>
<body>
<!-- <input type="button" value="点我试一下" onclick="alert('你好呀')"> -->
</body>
</html>
单行注释:ctrl+/
多行注释 ctrl+/
2. 输入输出语句:
alert() 浏览器会弹出警示框 最终归属于浏览器
console.log() 浏览器控制台会打印输出信息,就是只能程序员看到,打开网页时右击选择检查,打开控制台
prompt() 浏览器会弹出输入框,用户可以输入
3.变量
存储数据的容器,通过变量名获取数据,本质上是在内存中申请一块存放数据的空间
- 变量的使用:包括声明变量和变量赋值 用js关键字var来声明变量
var 变量=赋值;(从右往左赋值)
可以同时声明多个变量,写一个var,多个变量名之间用英文逗号隔开
只声明,不赋值; 结果是undefined
不声明,不赋值,直接使用,结果是报错
不声明,只赋值,可以输出变量的值
变量的初始化在声明变量的同时,给变量赋值
2. 变量命名规范:
1. 由字母,数字,下划线,美元符号组成
2. 严格区分大小写
3. 不能以数字开头。不可以是关键字,保留字
4. 变量名必须有意义,就是见名知意
5. 遵守驼峰命名法,首字母小写,后面单词的首字母要大写
3. 实现两个变量的交换:需要一个临时变量
<script>
var a=10 , b=20;
var c;
c=a;
a=b;
b=c;
console.log(a,b) ;
// 此时,a=20 b=10
</script>
</head>
- 也分全局变量和局部变量,如果全局变量和局部变量使用相同的变量名,则局部变量将要覆盖全局变量
4. 常量:
通常指的是数值类常量
例如:最大值Number.MAX_VALUE 最小值 Number.MIN_VALUE
5. 数据类型
js的变量 数据类型在声明变量时是不确定属于那种数据类型的,只有给变量赋值后,由等号右边的值来确定的
js是动态语言,变量 数据类型是可以变化的
var x=10; x='hello' x由数字型变为字符串型
基本数据类型
1, 数字型(Number) 包含整形值和浮点型值, 默认值是0
- 在JS中八进制前面加数字0,十六进制前面加0x
- 八进制数字有0到7 十六进数字有0到9 A到F
- 有小数部分,用十进制表示,普通形式和指数形式。7.2、 .72、 72.、 7E2、 7e2、 .7e2、 7.e2、7.2e-2; 支持科学计数法。
若数值只有小数部分,可以省略整数部分的0. - 了解: 数字范围: 最大值Number.MAX_VALUE
最小值 Number.MIN_VALUE
三个特殊值:
lnfinity 代表无穷大
— lnfinity 代表无穷小(无穷大的前面加一个负号)
NaN 代表一个非数值
isNan() 这个方法用来判断非数字,返回一个值,若是数字,返回false - 算术运算允许除数为0 例如10/0 结果是 lnfinity 代表无穷大
2. 布尔类型(Boolean) true 和false 默认值是false
布尔型和数字相加时,true表示值为1 faulse表示值为0
3. 字符串类型(String) 都带有引号 默认值是“ ”
JavaScript中没有字符类型。
与Java中字符串的区别:
JS中的字符串可以用单引号来定义;
JS中比较两个字符串是否相等,用“==”即可
- 字符串的引号的嵌套:
单引号可以嵌套双引号,反之,也可以; 规则外双内单,外单内双 - 字符串转义字符:以\开头
\n 换行符
双斜杠 斜杠\
单斜杠加单引号 ' 单引号
单斜杠加双引号'' 双引号
\b 空格
\t tab 缩进 - 字符串的长度
字符的数量就是字符串的长度,通过length来获取 变量名.length - 字符串的拼接:
多个字符串之间用 + 来拼接,字符串+任何类型=新的字符串
特别注意 ;变量名写入字符串中,就读取不到 变量值
4.未定义类型( Undefined) 声明了变量,却没有赋值,变量就是undefined 默认值是undefined
var a=10;
console.log(a+1);//结果是NaN
5. 空类型(Null )可以给变量声明为空值, a=null 默认值是 null
空值不等同于空字符串或0
null 表示变量是有值的,只是其值是null
var a=null;
console.log(a+1);//结果是 1
2. 数据类型的转换
1. typeof运算符以字符串的形式返回操作数的数据类型.
格式:
typeof(x)
typeof x;
<script>
var num=10;
console.log(typeof num);//控制台显示number
var f=true;
console.log(typeof f);//控制台显示boolean
var a= '学习呀';
console.log(typeof a);//控制台显示string
var age=prompt("输入你的年龄:");
console.log(typeof age);//控制台显示string
</script>
</head>
prompt() 的返回值类型是字符串类型
有一个词叫字面量,就是一眼看上去就知道属于何种数据类型
数字字面量:1 2 3
字符串字面量: “ 学习不会迟到”
2. 把其他类型转换为字符串类型
<script>
var num=10;
//1. 变量.toString()
var str=num.toString();
console.log(typeof str); //控制台显示string
//2. String(变量)
console.log(String(num));
//3.利用+号拼接字符串的方法,可以拼接一个空字符串
console.log(num + '');
</script>
3. 把其他类型转换为数字类型
- parseInt(变量)
得到整数,直接舍去小数部分,同时可以将数字后面的单位直接舍去 - parseFloat(变量)
可以得到小数,同时可以将数字后面的单位直接舍去 - Number(变量)
- 利用算数运算 减 乘 除 隐式转换为数值型
<script>
console.log(parseInt('3.14'));//3
console.log(parseInt('3.14px'));//3
console.log(parseFloat('3.14'));//3.14
console.log(parseFloat('3.14px'));//3.14
console.log (Number('123')); //123
console.log (Number('123'-23));//100
console.log (Number('123'-'23'));//100
</script>
</head>
案例1:在页面中 弹出一个输入框,我们输入出生年份后,就可以计算出年龄
1.弹出一个输入框(prompt)用户输入
2.把用户输入的值保存起来,然后减法
3.弹出警示框(alert) 输出结果
<script>
// year取过来的是字符串型,但这里是剑法,有隐式转换
var year=prompt('请输入你的年龄:');
var age=2021-year;
alert('你今年已经'+age +'岁了') ;
</script>
</head>
案例2: 简单加法计算器
1.弹出一个输入框(prompt)用户输入第一个数字,把用户输入的值保存起来
2.再弹出一个输入框(prompt)用户输入第二个数字,把用户输入的值保存起来
3.两个值相加,并将结果赋给新的变量
4.弹出警示框(alert) 输出结果
<script>
// year取过来的是字符串型,
var num1=prompt('输入第一个值:');
var num2=prompt('输入第二个值:');
//注意数据类型的转换
var result=parseFloat(num1)+parseFloat(num2);
alert('结果是:'+result);
</script>
</head>
4. 把其他类型转换为布尔类型 Boolean(变量)
代表空和否定的5个值会被转换为false 如:空字符串, 0 ,NaN , null undefined , 其余的值都会转换为true
5. 隐式转换总结
- 在算术表达式中,非数值型要隐式转换成数值型;
算术表达式-一个操作数是数值
另一个操作数是字符串,则将字符串转换成数值;
“+”例外,是字符串连接运算符,将数值转成成字符串;
另一个操作数是布尔值,则将布尔值转换成数值;
true转换成1,false转换成0
另一个操作数是空类型值null:
当null当作一个数值时,它相当于0;
另一个操作数是未定义类型值undefined:
当undefined用作数值时,它会被解释成NaN
- 在关系表达式和逻辑表达式中,非布尔型要隐式转换成布尔型;
0除外的所有数值作为布尔值解释时,是true
空字符串是false,其它所有字符串都是true
当null、undefined、NaN被解释为布尔型时,它们是false