一、JS的介绍
1.JS的由来:(1)网景公司----布莱登 · 艾奇----javascript
(2)ECMAScript
2.JS概念:(1)javascript是一个需要依附其他语言的脚本语言,必须依附HTML才能实现,需要嵌
套在HTML里面JS才能运行
(2)可以跨平台运行
(3)使用面向对象的思想编程
3.JS组成:ECMAScrip----语法标准,DOM----操作html文档的标准,BOM----操作浏览器的标准
4.JS和H5的关系: H5新增的许多标签,很多都需要使用JS来实现功能
5.JS的应用场景:表单验证、动效、网页游戏、物联网开发、网页开发(app、软件、小程序)
三、JS的基本使用
1.依赖html运行----在html中通过script双标签执行JS代码
2.JS的基本写法:(1)行内----直接给标签添加属性
(2)内联----给标签添加属性
(3)外联----引入外部文件<script src='路径'>
3.JS的输出方式:(1)alert(数据)------------------以弹窗形式显示-给用户通知、提示
(2)document.write(数据)---------以文本形式在body中显示
(3)prompt(数据)--------------------可输入的内容弹窗
(4)confirm(数据)-------------------询问用户是否确认操作的弹窗,有取消选项
(5)console.log(数据)--------在控制台中显示调试使用(注:使用最多)
4.JS的注释:(1)单行注释-------- ---//------------------ctrl+?
(2)多行注释-----------/* */---------------alt+shift+a
四、变量
1.含义:是一个存储数据的容器,通过一个名字可以代表一个数据
2.定义:2-1. var 变量名字 -------(1)在内存里开辟了空间
(2)名字 = 数据 -----------数据放在了空间中
2-2. var 变量名字 = 数据 ---------- (1)= 赋值号
3.变量名字的要求:(1)由字母数字下划线美元符号汉字组成
(2)不能使用数字开头
(3)不能使用关键字做变量名
var a = 1;
document.write(a); // 1
var b = a + 2;
document.write(b); // 3
var c = 6,d = 7;
document .write(c + d); // 13
五、数据类型
1.数字类型:number
(1)NaN:检测一个数据是否是数字------表示一个非数字的特殊值
注意:1.NaN是一个number类型,表示一个非数字
2.NaN不等于任何值,包括他本身
结果:NaN
注:a为字符串类型,不是数字,b为数字类型,减号两边类型不同,系统会偷偷的转换为同一类型输出,所以赋给c后,输出c的结果是NaN
var a = "abc";
var b = 2;
var c = a - b;
console.log(c);
(1)isNaN():检测一个数据是否是数字
true:不是数字
false:是数字
结果:false true
var a = 123;
var b = "abc";
console.log(isNaN(a)); // false
console.log(isNaN(b)); // true
(2)小数计算可能不精准
原因:计算机内部通过小数转换成二进制计算,转的就不精准,结果不精准
解决:1.数字.toFixed(位数)--------强制保留小数点后几位
var a = 0.1 + 0.2;
console.log(a.toFixed(3)) //0.300-----保留三位小数
2.让两个数字都乘以10的n次方,转成整数计算再除以10的n次方
结果:0.3
var a = 0.1 + 0.2;
console.log((0.1*10+0.2*10) / 10)
2.字符串类型:string--------- 一串字符用引号引起来
(1)双嵌套单 或 单嵌套双 都可以,但引号不能嵌套自己,除非转义\ " ' abc ' " , " \" abc \" "
(2)document.write 只能输出字符串
(3)字符串和字符串之间要用 + 进行拼接
3.布尔类型:boolean--------- 表示事物的两面性
(1)true-----判断为真,显示true
(2)false----判断为假,显示false
4.未定义类型:undefined--------变量定义了,但没有赋值
(1)当一个变量定义了,但是没有给里面放数据 ---- 默认会输出undefined
5.对象类型:object---------一个变量存储多个数据-----复杂
6 .typeof看类型
(1)typeof 数据 -------- 可以使用一个变量接收类型
(2) typeof(数据) ------ 可以通过一个变量接收类型
// 数字类型
console.log(123456); /*--- 在控制台页面上显示 */
console.log(typeof 123456); /*--- number数字类型 */
// 字符串类型
var a = '今天天气好吗?';
console.log(a);
console.log(typeof a); /*--- 查看是什么类型 string字符串类型 */
// 未定义类型
var b;
console.log(b); /* 未定义----当一个变量定义了,但是没有给
里面放数据---默认会输出undefined */
console.log(typeof b); /* ---没有赋值的话就显示undefined未定义类型 */
// 布尔类型
var a = 10,b = 15;
console.log(a > b); /* 判断为假,显示flase ; 真----true */
console.log(typeof (a > b)); /* boolean 布尔类型 */
// 对象类型
var obj = {
name: "张三",
age: 12
} /* 一个集合-----定义多个对象 */
console.log(obj); /* 控制台显示内容 */
console.log(typeof obj); /* 对象object类型 */
7.扩展---进制转换
十进制------10
八进制------010------答案:8---------1,2,3,4,5,6,7,10
十六进制----0x10----答案:16-------1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
二进制
var a = 0xA;
console.log(a);
二进制转换为十进制
11011------二进制:
2(4) 2(3) 2(2) 2(1) 2(0) -----第一步: 从右至左依次按顺序乘次方(从0开始)
2(4) + 2(3) + 2(2) + 2(1) + 2(0) -----第二步: 计算出各项的积
2(4)*1 + 2(3)*1 + 2(2)*0 + 2(1)*1 + 2(0)*1 = 27 -----第三步: 每一项积再乘以对应的二进制数字,
得出结果
十六进制转换为十进制
147--------十六进制: 提取公因数(从下至上)
结果:93-----------147 / 16 = 9---%3
349--------十六进制: 提取公因数(从下至上)----1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10
结果:15D----------349 / 16 = 21---%13 , 21 / 16 = 1---%5 (把13转为十六进制为D)
8. 科学计数法
var num = 3e+5; /* 3乘10的5次方 */
var num = 3e-5; /* 3乘10的-5次方 */
9.数字中的无穷
数字中表示有无穷大 Infinity
数字中表示有无穷小 -Infinity
10.计算机能存储的数值范围
console.log(Number.MAX_VALUE); // 内存能识别的最大值
console.log(Number.MIN_VALUE); // 内存能识别的最小值
11.js中对大小写敏感
var a = 10
console.log(A);
六、运算
1.算术运算:
(1)加+ 减- 乘* 除/ 求余%
(2)求余运算:通常用于判断一个数字是奇数或偶数。因为所有奇数对2求余的结果
都是1,所有偶数对2求余的结果都是0。
2.关系运算:
(1)比较运算的结果一定是布尔值:true或者false
(2)大于> 大于等于>= 小于< 小于等于<=
(3)等于== 全等=== 不等于!== 不全等!===
(4)等于== ---------只判断两边的值(数据)是否相等 ,忽略类型
(4)全等于=== ---------先判断两边的类型是否相等,类型相等,才判断值是否相等,
如果类型不相等,后面直接不判断值
(5)不等于!== ---------将==的结果取反
(5)不全等于!=== ---------将===的结果取反
3.赋值运算:
3-1. =赋值 += -= *= /= %=
3-1. = --------------- (1)左边是变量
(2)右边是数据
(2)作用是将右边的数据放在左边的变量中
3-2. += ------------- (1)a += 2 ---------- a = a+2 的简写
4.逻辑运算:
(1)&& 并且
(2)|| 或者
(3)! 取反
七、自增自减运算
1.概念:让一个变量在自己原本基础上 +1或者 -1
2.自增: 2-1. 变量++ :当碰到输出、赋值、运算的时候放前面和后面是不一样的
(1)先用后加:符号在后,先进行其他操作,再进行自增
2-2. ++变量 :
(1)先加后用:符号在前,先进行自增,再进行其他操作
2.自减: 2-1. 变量- - :当碰到输出、赋值、运算的时候放前面和后面是不一样的
(1)先用后减:符号在后,先进行其他操作,再进行自减
2-2. - -变量 :
(1)先减后用:符号在前,先进行自减,再进行其他操作
八、类型转换
1.强制转换---------使用工具去转
1-1. 强制转换为数字类型---Number(数据)
1.NaN代表虽不是数字,但是是数字类型
2.undefined类型转换为数字NaN
3.boolean类型里的ture转换为数字类型控制台显示是1,false显示是0
4.object类型null、[ ]转换为数字类型控制台显示的是0
5.非数字或非数字字符串转换后都是NaN
6.使用函数强制转换为数字类型
(1)parseInt(数据) :强制转换为整数(从前向后数,只取第一个整数)
(2)parseFloat(数据) :强制转换为数字(取数字,只取第一个数字,如果第一
个数字有小数,那也取!)
(3)undefined强制转换为数字类型显示NaN
(4)boolean强制转换为数字类型显示NaN
(5)undefined强制转换为数字类型显示NaN
(6)首位是非数字的字符串强转为整数为NaN,首位是数字的字符串强转为
整数是首位的数字
7.Number :空字符串、false、null、[ ]转成0
1-2. 强制转换为字符串
1.String(a)
1-1.undefined转为字符串仍显示为undefined,但类型是字符串
1-2.true转为字符串仍显示为true,但类型是字符串,false转为字符串仍显示为true
但类型是字符串
1-3.null转为字符串仍显示为null,但类型是字符串, {}定义的对象转换结果为
[object,Object], []定义的转换结果为括号里的字符串内容
2. .toString---- .前必须是一个对象
2-1.undefined不能使用.toString
2-2.null不能使用.toString,但是{}和[]可以用
2-3.number和boolean可以使用.toString
(1)String
(2)数据.toString()----undefined和null不能同时使用
var a = 123;
console.log(a);//----此时为数字类型----控制台数字显示是蓝色
console.log( String(a) );//---为字符串类型----控制台数字显示是黑色
1-3. 强制转换为布尔类型: Boolean(a)
1.数字0转换为布尔型---flase 非0是ture
2.空字符串转换为布尔型---false 非空字符串是true
3.underfined转换为布尔型---false
4.null转换为布尔型---flase ---object(null) {}和[]都是true
5.Boolean:0、空字符串、undefined、null转成false、其他都是true
2.隐形转换
1-1. 字符串加数字=拼接
"123"+5=1235
1-2. 数学运算符号
true+flase=1
1-3. 数字和字符串作比较
'6'>5 ----true
//1.数学运算时转换为数字类型-----会将左右两边的数据都转成数字进行数学运算
var a = true;
var b = false;
var c = a + b;
console.log(c);
//2.当有一个是字符串,另一个也会隐形的转换为字符串,然后进行拼接
var a = '1234';
var b = 88888;
var c = a + b;
console.log(c);
var a = 'abc';
var b = 66666;
var c = a + b;
console.log(c);
//3.比较运算符----左右两边有一个是数字,另一个也会隐形的转换为数字,然后进行数字大小的比较
var a = '16';
var b = 3;
console.log( a > b);
console.log( a < b);