原生js学习笔记(一)

js程序是单线程依次执行,例如
for(var i=1;i<=3;i++){
  console.log(i);
  setTimeout(function(){
    console.log(i); //输出:1,2,3,4,4,4
  },0)
}

js定时器有两种:setTimeout(超时调用)和 setInterval(间歇调用),都属于异步任务,即当主线程上所有同步任务执行完毕,且主线程读取任务队列上的其他异步任务(Promise、Ajax等)推入执行栈且执行完毕后,才开始执行定时器的代码。这里的同步任务就是指第二行的console.log(i)。并且,这三个4是同时输出的,因为这三个定时器在同步任务执行完后,同时推入进程,这与后面的延迟时间无关。


js采用嵌入代码的优势:可维护性、可缓存、适应未来


ECMAScript有5种基本数据类型:Undefined、Null、Bollean、Number、String;以及一种复杂数据类型:Object。其中,Object本质上是由一组无序的键值对组成。


Undefined类型只有一个值,在使用var声明变量但未对其加以初始化时,就是undefined。

Null类型也算只有一个值的数据类型,其值为null;null值表示一个空指针对象,使用typeof操作符检测null值时会返回“object”


各数据类型的Boolean值转换规则

数据类型                                         true                                                                    false

String                                        任何非空字符串                                                        空字符串

Number                                     任何非零数字值                                             0和NaN(Not a Number)

Object                                          任何对象                                                                  null

Undefined                                     不适用                                                               undefined


浮点值计算会产生舍入误差,例如0.1+0.2=0.30000000000000004;


NaN有两个特点:任何涉及NaN的操作都会返回NaN;

                            NaN与任何值都不相等,包括自身


isNaN()函数,确定接收的参数是否“不是数值”。isNaN("10")返回false,isNaN(true)返回false;


数值转换函数:Number()、parseInt()、parseFloat()

Number()可用于任何数据类型,对于Boolean值,返回1或0;对于null值,返回0;对于undefined,返回NaN。

parseInt("1234blue")  // 1234

parseInt("")  // 0

parseInt("22.5")  // 22

parseFloat()解析到遇到一个无效的浮点数字字符为止。







你可能感兴趣的:(JavaScript)