1.JS概述
(1)历史
1995年,JS最早出现在Netscape的浏览器中
1996年,IE中也可以出现了JS
1997年,指定了JS的标准规范 ECMAScript
2009年,JS开始向后端发展,开始出现Node.js
(2)现状
JS既可以运行在客户端浏览器,也可以运行在服务器端
(3)特点
JS是解释型语言,编译一行执行一行
弱类型语言
基于对象
跨平台
(4)应用场景
开发浏览器端的交互效果,服务端的开发,例如访问数据库,调用其它的服务器...
2.搭建开发环境
(1)浏览器端
谷歌/火狐/Safari/Edge/欧朋
(2)服务器端
Node.js
下载地址:www.nodejs.org
node -v 查看当前版本号
(3)运行JS
浏览器
创建01.js和01.html,把js文件嵌入到html中
<script src='01.js'></script>
最后用浏览器打开html即可运行js
Nodejs
node 拖拽js文件 回车
3.JS语法规范
区分大小写
每行代码结束的分号可以省略
分为单行注释(//...)和多行注释(/*..*/)
4.变量
变量是用于存储数据的容器
var x=1;
var a=2, b=3;
使用var关键字声明变量,在内存中开辟空间,然后再存储数据。
(1)命名规则
变量名称可以由字母、数字、下划线、美元符号组成,其中不能以数字开头,不能是使用关键字,不能使用汉字
语义
phone email
user_name
userName yongHuMing
(2)变量的赋值
变量声明后未赋值,则值为undefined(未定义)
变量可以多次赋值,并且赋不同类型的值,这也是弱类型语言的特点。
练习:声明变量保存一组商品的价格和数量,然后修改价格和数量,最后计算出总价
5.常量
常量也是存储数据的容器
const pi=3.14;
使用const关键字声明常量
特点:声明后必须赋值,不允许重新赋值。
1.数据类型
分为原始类型和引用类型
原始类型分为数值型、字符串型、布尔型、未定义型、空
(1)数值型
10进制
1 2 3 ... 7 8 9 10 .. 15 16
8进制:以0开头的数字,例如:010
1 2 3 ... 7 10 11 12
16进制:以0X开头的数字,例如:0XA ,不区分大小写
1 2 3 ... 7 8 9 a .. f 10
浮点型
31415e-2
314.15
3.1415e+2
(2)字符串型
被引号包含的值,不区分单双引号
查看任意一个字符的Unicode码
'a'.charCodeAt()
检测数据类型
typeof
'number'/'string'/'boolean'/'undefined'/'object'
(3)布尔型
只有两个值,分别是true和false,代表真和假
常用于保存只有两个状态的值,例如:是否登录、是否为会员..
(4)未定义型
只有一个值undefined,表示一个空值,例如:声明变量未赋值为undefined
(5)空
只有一个值null,表示一个空值
常和引用类型的数据一起使用
2.数据类型转换
分为隐式转换和强制转换
(1)隐式转换
在运算过程中自动产生的转换
①数值+字符串 数值转为字符串
3+'1' //'31'
②数值+布尔型 true->1 false->0
3+true //4
3+false //3
③字符串+布尔型 布尔型转为字符串
'3'+true //'3true'
加号(+)的作用 ①执行数值间的加法运算 ②执行字符串间的拼接 |
练习:查看以下程序的运行结果
var a=1, b=true, c='tedu';
console.log(a+b+c); //'2tedu'
console.log(b+c+a); //'truetedu1'
console.log(c+a+b); //'tedu1true'
NaN:Not a Number,不是一个数字,它是将值转数值过程中没有成功的得到数值返回的结果,NaN和任何的数字执行运算结果还是NaN |
所有隐式转换为数值会自动调用函数Number
(2)强制转换
①强制转换为数值
Number()
Number('2') //2 Number('2a') //NaN Number(true) //1 Number(false) //0 Number(undefined) //NaN Number(null) //0 |
②强制转为整型
parseInt()
通常用于将字符串和小数转为整型,其它类型转换结果是NaN
parseInt(-4.8) //-4 parseInt('4.8') //4 parseInt('4.8a') //4 parseInt('a4.8') //NaN |
③强制转为浮点型
parseFloat()
用于将字符串转为浮点型
parseFloat('3a') //3 parseFloat('3.14a') //3.14 parseFloat('a3.14') //NaN |
④转字符串型(了解)
只能将数值和布尔型转为字符串
toString()
var n=2; n.toString() //'2' |
3.运算符
表达式:由数据本身或者运算符连接的操作数据组成的格式
运算符分为算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、三目运算符
(1)算术运算符
+ - * / % ++ --
% 取余数
++ 自增,在原来基础之上加1
-- 自减,在原来基础之上减1
var b1=3; //先把b1的值赋给b2,然后b1再执行自增 var b2=b1++; |
var b3=3; //先让b3执行自增,把自增的结果赋给b4 var b4=++b3; |
练习:查看以下程序的运行结果
var n1=8;
var n2=--n1;
var n3=n1--;
console.log(n1,n2,n3);
(2)比较运算符
> < >= <= ==(等于) != ===(全等于) !==(不全等于)
== 等于,只是比较两个值是否相同
=== 全等于,比较的是值和类型,要求两者都相同
!= 不等于,只是比较值是否不等
!== 不全等于,值不等或者类型不等
数字和字符串比较,字符串转换为数字
3>'10' //false
字符串直接比较,比较的是首个字符的编码
'3'>'10' //true
'3'->51 '1'->49
3>'10a' //false
3<'10a' //false
3=='10a' //false
NaN==NaN //false
NaN和任何的值比较(> < >= <= == ===)结果都是false
(3)逻辑运算符
&& 逻辑与(并且),关联的两个条件都是true,结果是true,否则是false
|| 逻辑或(或者),关联的两个条件有一个是true,结果是true,否则是false
! 逻辑非,取反
短路逻辑
逻辑与:当第一个条件为false,就不再执行第二个条件
逻辑或:当第一个条件为true,就不再执行第二个条件
短路逻辑无需查看整体是true还是false,就看第二个条件是否执行。 |