JavaScript基础

JS概念

  1. 脚本语言:依赖别的语言才能运行,js嵌套在html内才能运行。

  2. 跨平台:可以再不同平台上运行

  3. 支持面向对象

JS的组成

  1. ECMAScript:语法标准

  2. BOM:操作浏览器的标准

  3. 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;

数据类型

i数据类型png

对象类型

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);

浏览器查看:


NaN

在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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容