JS概念
脚本语言:依赖别的语言才能运行,js嵌套在html内才能运行。
跨平台:可以再不同平台上运行
支持面向对象
JS的组成
ECMAScript:语法标准
BOM:操作浏览器的标准
DOM:操作html文档的标准
JS的注释
单行注释:
// js的单行注释是双斜杠
多行注释:
/*
js的多行注释:
开头是斜杠星号
结尾是星号斜杠
*/
JS的输出
1.以弹窗的形式显示
alert(123);
2.以文本的形式显示
document.write(123);
document.write是写在body里的所以可以再写的内容外面加标签,但是必须为字符串类型。
3.可以输入内容的弹窗
prompt(123);
由prompt接收的内容是字符串类型
这种弹窗通常在项目使用较少,项目中要提示用户输入内容的时候通常都会使用表单。
4.询问用户是否确认操作的弹窗
confirm(123);
5.浏览器控制台输出
console.log(123);
这种输出方式在开发过程中很常用,通常用于调试代码时,在浏览器的控制台查看调试结果,不会影响到整体项目的逻辑和效果。
注意:在js代码中,每行结束可以加分号,也可以不加分号,但是建议加上。
定义变量
语法:
var 变量名;
变量名由字母、数字、下划线、美元符号组成,不能用数字开头。
复合形式
var 变量1,变量2;
数据类型
对象类型
object类型,在js中有3种表现形式,分别是:
- null
- 用[]定义的数据
- 用{}定义的数据
undefind类型
当一个变量定义好了,但是没有给这个变量赋值,也就是没有给这个容器中放入数据,这个变量的默认值就是undefined,类型也是undefined。
检测数据类型可以用 typeof 例如:
console.log(typeof(-123456)); // 数字型
console.log(typeof("明天会更好")); // 字符串型
console.log(typeof(true)); // 布尔型
console.log(typeof(x)); // 布尔型
console.log(typeof([1,2,3])); // 对象
console.log(typeof({name:"张三",age:12})); // 对象
console.log(typeof(null)); // 对象
也可以用typeof x用空格隔开而不使用括号
不同进制的数字
var a = 010; // 8进制(以0开头)
var b = 0xA; // 16进制(以0x开头)
var c = 0xb; // 小写字母和大写字母都可以
console.log(a); // 8
console.log(b); // 10
console.log(c); // 11
科学计数法
//当一次数字很大的时候,可以用科学计数法来表示
var num = 3e+5; //3乘以10的5次方
var num = 5e-3;//5乘以10的-3次方
数值范围
最小值:Number.MIN_VALUE
最大值:Number.MAX_VALUE
值得大小分别为:5e-324,1.7976931348623157e+308
无穷大:Infinity 1/0
无穷小:-Infinity
Not a Number(NaN)
例子:
var a = 'abc';
var b = 2;
var c = a - b;
console.log(c);
浏览器查看:
在js中,NaN用来表示一个非数字的特殊值,当发现无法进行运算时,js不会报错,而是会返回一个NaN。
注意:
- NaN的类型为number,表示一个非数字
- NaN不等于任何值,包括自己本身
isNaN()
通过isNaN()来判断一个变量是不是一个数字,返回false值时,说明变量是一个数字。
var a = 123;
var b = "abc";
console.log(isNaN(a)); // false
console.log(isNaN(b)); // true
计算小数有误差
计算机中的小数在进行运算的时候,有时会碰到小数点精度不准确的现象。
原因:
计算机内部所能识别的数据只有二进制,当我们进行10进制数字运算的时候,在计算机内部需要先将数据转为2进制,然后运算,再将结果转为10进制给出来。10进制的小数进行2进制转换的时候,根据转换规则,有些小数会进行无限死循环,最终在后面数字太多的时候只能四舍五入,所以其实最终并没有很精确的转为2进制,所以只能给出一个大概的值。有时候会有两个大概的值相加,在转换10进制的时候正好能转换了,也会计算的比较精准。
解决方法:
// 解决办法 :
// 1.根据小数点后面的位数量 乘以对应的整数;
0.1 + 0.2 ==> (0.1*10+0.2*10) / 10 = 0.3
// 2.使用toFixed工具强制保留小数点后位数
var a = 0.1 + 0.2
console.log(a.toFixed(3)) // 0.300
转义符
给字符串中的引号转义,也就是将引号对于字符串的特殊含义去掉,就剩下普通字符的含义即可。转义是给引号前加反引号 \
。
关系运算
最后只有两种结果,真与假,也就是布尔值(boolean)D的true和false。
等于和全等于
==
等于判断两边的数值是否相等
===
全等于则是先判断两边的类型是否相等,在判断数值相等。
同理于
!=
不等判断两边的数值是否不相等
!==
不全等则是先判断两边的类型是否不相等,在判断数值不相等。
赋值运算
逻辑运算
自增自减运算
符号:
++ 表示让一个数字递增1
--表示让一个数字递减1
一半情况++ 与 -- 放在变量前后是一样的
但是当递增运算碰到赋值或者输出的时候,++放在前面和后就有了区别:
var a = 1;
console.log(a++); // 1
console.log(a); // 2
var b = 1;
var c = b++;
console.log(c); // 1
console.log(b); // 2
当++或者--放在后面的时候,则是先进行赋值运算再进行递增运算。
类型转换
1.转换为布尔型
语法:
Boolean(arg)
- 非0的数字转换为布尔型的true,0转换成false。
- 非空字符转换成true,空字符转换为false。
- undefined转换为布尔型的false
- null转换为布尔型的false
2.转换为字符串
语法:
String(arg)
或者数据.toString()
但后者不能加给null和undefined
- true转换为字符串仍为 true,false转换为字符串仍为false
- null转换为字符串扔为null
- undefined转换为字符串仍为undefined
3. 转换为数字
语法:
Number(str)
- NaN代表不是数字,但是他是数字类型(没有意义的数字)
- 非数字字符串转换后都是NaN(NaN是一个不是数字的数字类型)
- true转为数字为1,false转为数字为0
- undefined转换为数字为NaN
- null转化为数字为0
4.使用函数强制转换为数字
语法:
parseInt(arg)
强制转换为整数
parseFloat(arg)
强制转换为小数
- 小数转换为整数只取整数,向下取整
- 首位非数字的字符串强转为整数为NaN,首位是数字的字符串强转为整数是首位的数字
- 布尔型强转为数字为NaN
- undefined强转为数字为NaN
- null强转为数字为NaN