变量、常量 和 数据类型、数据类型转换 和 运算符(进制转换)、浏览器端函数、程序的流程控制概述
变量声明:
1. 使用关键字 var 声明变量
var id=108,title=‘小米air’;
2. 使用 “=” 为变量赋值
3. 没有初始化的变量自动取值为undefined
4. 可以先声明,后赋值
5. 赋值后可以再次变动(是一个可变值)
常量的声明:
1. 使用关键字 const 声明变量
2. 声明就要赋值,赋值后不能再次改动
变量的命名规范:
1. 可以包含字母、数字、下划线(_)、美元符号($)
2. 不能以数字开头
3. 常用于表示函数、变量等的名称
4. 名称最好有明确的含义
5. 可以采用“匈牙利命名法”、“下划线命名法”、“小驼峰命名法”或者“大驼峰命名法”之一,在开发团队内进行协调统一

数据类型:

检测数据类型关键字:typeof

原始类型:
1. number 类型
数字类型既可以表示32位的整数,也可以表示64位的浮点数
整数→ 十进制:逢十进一的整数,如1234567890
八进制:逢八进一的整数,如012345670
十六进制:逢十六进一的整数,如0x123456789abcdef0
浮点数→ 使用小数点记录数据,如95.5,3.1415926
使用指数记录数据,如4.3e23,4.3E-23
2. 字符串类型
表示一系列的文本字符数据,如性别、姓名、住址等
由Unicode 字符、数字、标点符号组成的序列
console.log('一'.charCodeAt()); #检测汉字的Unicode 码
JavaScript 不像 java严格区分字符和字符串类型
首尾由一对单引号或双引号括起来
3. Boolean 类型
仅有两个值:true 和 false(也代表1和0)
实际运算中true == 1,false == 0
4. undefined
语义:‘不存在该数据’。声明了变量但从未赋值,或者对象属性不存在
5. null
空值,常用于清空一个对象
数据类型转换:
JavaScript 属于弱类型语言:1. 变量在声明时不需要指定数据类型
2. 变量由赋值操作确定数据类型
3. 某个变量可以先后赋值为不同类型的值
不同类型数据在计算过程中会自动进行转换
数字 + null:null转为数值0
数字 + undefined:NaN(不是一个数字),undefined没有成功转为一个数值,所以相加等于NaN
NaN 和任何值运算,都返回NaN,不包括和字符的相加
隐式转换:(加减乘除的转换)
减乘除自动调转Number转数字类型;加法(字符串和数字),符号两端有字符串则转为字符串,符号没有字符串则转为数字类型
如果转数值自动的调用number函数
加号作用:1.字符串的拼接:加号的两侧有一个值为字符串;2.加法运算。




数据类型(强制转换)转换函数:
1.toString() → 转换成字符串,所有数值和布尔型转换为string 类型
2.parseInt() → 解析出一个string 或 number 的整数部分
如果没有可以转换的部分(主要看开始部分是不是数字),则返回NaN(Not a Number)
3.parseFloat() → 解析出一个string 的浮点数部分
如果没有可以转换的部分,则返回NaN
4.Number() → 把一个string 解析为number
如果包含非法字符,则返回NaN

运算符
表达式指 可以用于计算的式子,即可能产生一个值的式子

1. 算数运行符
加(+)、减(-)、乘(*)、除(/)、求余(%)表示求余运算,或者称为取模运算
- 可以表示减号,也可以表示负号;+ 可以表示加法,也可以用于字符串的连接


涉及自增 和 自减 (++在前先赋值再打印,++在后先打印结果后赋值),自增和自减只相对于一个变量,不能是一个数值,如果是一个字符串的变量也会进行自增,启动隐式转换将字符串转换为数值进行自增
2. 关系运行符
用于判断数据之间的大小关系
> 大于 < 小于 >= 大于等于 <= 小于等于 == 等于() === 全等(类型和值都要相同) != 不等于 !== 不全等
2-1. 关系表达式的值为Boolean类型(“true” 或者 “false”);
2-2. 两个值都是字符的时候,比较的是首字符的Unicode码;
2-3. 数值和字符,字符直接隐式转数值进行比较
2-4. 数值和字符比较(字符中有非数值例如3a),因为隐式转换就是调用Number,Number中只要含有非数字都返回NaN,NaN和任何值(除字符串,因为字符串是拼接)比较都是NaN
2-5. 总结:若参加关系运算的两个数据类型不同,则会发生“隐式类型转换”,统一为相同类型后才能进行比较


全等运算不会发生“隐式转换”,只要两个数据类型或者数值之一不同,即判定为不相等
isNaN 函数:isNaN() 用于把NaN 与任何值(包括其自身)相比得到的结果均是false,所以要判断某个值是否是NaN 不能使用 == 或 === 运算符。只能使用isNaN() 函数;通常用于检测类型转换函数的运算结果,以判断它们表示的是否是合法的数字

3. 逻辑运算符 逻辑非(取反)==》! 逻辑与(并且)==》&& 逻辑或(或者)==》||
关于短路逻辑(对于&& 运算:false && ? => false;对于 || 运算:true || ? =>true)

只有前边为true 才会执行后面


&& 的优先级高于 || ,如下,如果左侧红框先执行,再执行右侧红框

但是()的优先级更高:![]()
运算符的优先级表格如下:

4.位运算符 位运算是将数字以二进制形式进行运算(逢二进一),例如下十进制和二进制之间的转换(结果为32+4+2=38)
4-1 按位与 & 上下两位都是1,结果是1,否则是0 ==》
例1:console.log(5&7);# 5转二进制4+1(101),7是4+2+1(100+10+1=1111),先转成二进制在进行运算(上下两位进行比较)
再转就是5
例2: console.log(5&12);# 5转二进制4+1(101),12是8+4(1000+100=1100),先转成二进制在进行运算(上下两位进行比较),上下位数不对齐时,前面自动补 0 对齐
再转就是4
4-2. 按位或 | 上下两位含有1,结果是1,否则是0 ==》
例:console.log(9|17);#9转二进制8+1(1000+1=1001),17就是16+1(10000+1=10001)
再转回来就是25
4-3 按位异或 ^ 上下两位不同为1,相同为 0 ==》
例:console.log(5^12);#5转二进制4+1(1000+1=1001),12就是8+4(1000+100=1100)
再转回来就是9
4-4 按位右移 >> 删除二进制后的最后一位或者多位,每次缩小到原来的一半或者更多
按位左移 << 在二进制的最后添加0,成倍增加
例右移:console.log(49>>1);#49转二进制32+16+1(100000+10000+1=110001)
110001去掉最后一个1,往右移动,成为11000,再转回来也就是10000+1000=16+8=24
例右移:console.log(49>>2);#49转二进制32+16+1(100000+10000+1=110001)
110001去掉最后两位,往右移动,成为1100,再转回来也就是1000+100=8+4=12
例左移:console.log(3<<1);#3转二进制11
11往左移动1位,补0,成为110,再转回来也就是6
5. 赋值运算
= 用于为变量赋值 
在绝大多数编程语言中,a+=3 由于运行时可以进行优化,执行效率都要优先于a=a+3;
7. 条件(三目)运算 ?:
需要对三个表达式进行运算===》表达式1 ? 表达式2:表达式3
其中表达式1 的值应是Boolean 类型,表达的含义是如果表达式1 为true,则整个表达式的值为表达式2的值,若表达式1为false,则整个表达式的值为表达式3 的值

8. 浏览器端函数(只能再浏览器中运行)
#弹出警示框(不带input) alert("弹出的警示消息");
#弹出提示框 (带input输入框,变量接收后可再控制台打印接收,类型是字符串,点击取消返回null)
prompt("弹出的提示消息");
浙公网安备 33010602011771号