js学习 Day01(语法规范)
- js语法规范
区分大小写 每行结束的符号可以省略,单行注释(//.....),多行注释(/*...*/)。
- 变量
适用于存储数据的容器。
var a =1 ;
使用var声明变量,在内存中开辟空间名称为a,然后把1保存进入。
可以多次赋值,赋不同类型的值
- 命名规范
变量名称可以由字母、数字、下划线、&组成,不能以数字开头!例:
var 1a = 1;注意:变量名不能是关键字。
尽量使用语义命名和驼峰命名法
- 常量
1.常量
const pi=3.14
常量也是用于存储数据的容器
常量一旦声明必须赋值,不允许重新赋值
- 数据类型
分为原始类型和引用类型
原始类型分为数值型、字符串型、布尔型、未定义型、空
(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
- 浮点型:
3141.5e-1
314.15
31.415e+1
3.1415e+2
- typeof 检测数据类型
'number'
'string'
'boolean'
'undefined'
'object'
(2)字符串型
被引号包含的数据就是字符串型,不区分单双引号
查看任意一个字符的Unicode码
's'.charCodeAt()
(3)布尔型
只有两个值,分别是true和false,代表真和假,表示只有两个结果的数据,例如是否登录、是否注册...
(4)未定义型
只有一个值undefined
声明了变量未赋值则为undefined,属于一种空值
(5)空
只有一个值null
类型是object(对象),常结合引用类型数据使用
- 数据转换
分为隐式转换和强制转换(1)强制转换为数值
Number()
Number(true) //1
Number(false) //0
Number('2') //2
Number('2a') //NaN
Number(undefined) //NaN
Number(null) //0
(2)强制转换为整型
通常用于将小数和字符串转为整型,其它的转换为NaN
parseInt(8.9) //8
parseInt('3.14') //3
parseInt('6.18a') //6
parseInt('a6.18') //NaN
(3)强制转换为浮点型
parseFloat()
通常用于将字符串转为浮点型,其它的转换为NaN
parseFloat('5.18') //5.18
parseFloat('7a') //7
parseFloat('a4.13') //NaN
(4)将数值和布尔型强制转为字符串(了解)
toString()
var num = 2;
num.toString() //'2'
- 3.运算符
表达式:由数据或者由运算符连接的操作数据组成的形式称作表达式
运算符分为算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、三目运算符
(1)算术运算符
+ - * / % ++ --
% 取余
++ 自增,在原来的基础之上加1
-- 自减,在原来的基础之上减1
var b = 2;
//先把b赋给c,然后b再自增
var c = b++;
var d = 2;
//先让d执行自增,然后把自增后的结果赋给e
var e = ++d;
整个算术运算符都会将数据隐式转换为数值型
(2)比较运算符
> < >= <= ==(等于) != ===(全等于) !==(不全等于)
== 等于,只是比较值是否相同,可能会发生隐式转换
=== 全等于,先比较类型,然后再比较值
!= 不等于,比较值不等于
!== 不全等于,类型不同或者值不同
3>'10' //字符串转为数值
'3'>'10' //比较的是首个字符的Unicode码
'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就不再执行第二个条件
练习:查看以下程序是否会报错
var a=5;
a > 10 && console.log(num); 不报错
a > 2 || console.log(num); 不报错
(4)位运算符
模拟计算机底层的运算,先将数据转为二进制,然后进行运算,当运算完再把结果转回成十进制。
1 2 3 4 5 6 7
1 10 11 100 101 110 111
& 按位与,上下两位比较,如果都是1结果是1,否则是0
| 按位或,上下两位比较,如果含有1结果是1,否则是0
^ 按位异或,上下两位比较,不同是1,相同是0
>> 按位右移,删除末尾的位数
<< 按位左移,在末尾补0
32>>2
100000 --> 1000000
5&7 8|13 7^12
101 1000 0111
111 1101 1100
———— ———— ———
101 1101 1011
Number() ParseInt() ParseFloat() .toString() true 1 NaN NaN ‘true’ false 0 NaN NaN ‘false’ null 0 NaN NaN 报错 undefined NaN NaN NaN 报错 ‘2’ 2 2 2 ‘2’ ‘2.33’ 2.33 2 2.33 ‘2.33’ ‘2a’ NaN 2 2 ‘2a’ ‘2.33a’ NaN 2 2.33 '2.33a' 'a2' NaN NaN NaN 'a2'
行+列 true false null undefined 1 ‘1’ ‘a1’ true 2 1 1 NaN 2 'true1' 'truea1'
false 1 0 0 NaN 1 'false1' 'false1' null 1 0 0 NaN 1 'null1' 'nulla1' undefined NaN NaN NaN NaN NaN NaN NaN 1 2 1 1 NaN 2 '11' '1a1' ‘1’ '1true' '1false' 'null1' NaN '11' '11' '1a1' ‘a1’ 'a1true' 'a1false' 'a1null' NaN 'a11' 'a11' 'a1a1'
课后任务
(1)复习今天内容,整理思维导图
(2)练习:声明变量保存任意一个年份,判断是否为闰年,如果是闰年,使用短路逻辑打印‘闰年’
闰年:能被4整除,并且不能被100整除,或者能被400整除
(3)预习js第3天,if if-else..