js线程,同步异步,预解析,作用域

区分线程和进程

进程是一个工厂,工厂有它的独立资源-工厂之间相互独立-线程是工厂中的工人,多个工人协作完成任务-工厂内有一个或多个工人-工人之间共享空间

js的单线程

javaScript 语言的一大特点就是单线程 为了避免复杂性,从一诞生,JavaScript 就是单线程,这已经成了这门语言的核心特征,将来也不会改变。

为了利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JavaScript 脚本创建多个线程,但是子线程完全受主线程控制,且不得操作 DOM。

同步执行:就是按顺序执行


function fun1() {
  console.log(1);
}function fun2() {
  console.log(2);
}

// 输出
fun1();
fun2();
1
2

同步任务是指在主线程上排队执行的任务,只有前一个任务执行完毕,才能继续执行下一个任务

异步任务

    异步任务是指不进入主线程,一般只有同步任务完成,才会开始执行异步任务,当我们打开网站时,像图片的加载,音乐的加载,其实就是一个异步任务 

异步:现在只说定时器

   前者可以使一段代码在指定时间后运行;而后者则可以使一段代码每过指定时间就运行一次。

   window.setTimeout(code,millisec);

   window.setInterval(code,millisec);

   其中,code可以是用引号括起来的一段代码,也可以是一个函数名,到了指定的时间,系统便会自动调用该函数,当使用函数名作为调用句柄时,不能带有任何参数;而使用字符串时,则可以在其中写入要传递的参数。两个方法中的第二个参数是millisec,表示延时或者重复执行的毫秒数。

清除定时器

clearTimeout(定时器名)

clearInterval(定时器名)

var i=0;
b= setInterval(function(){//创建定时器

    if (i<10){
        console.log(i);
        i++
    }else{
     clearInterval(b)//当上面i输出到9时执行这一句清楚定时器
    }
},200)

预解析:

当变量和函数的声明处在作用域比较靠后的位置的时候,变量和函数的声明会被提升到作用域的开头。

一定注意是提升声明

console.log(a);

var a=1;

不会输出1,因为只提升声明,a=1,还留着原地

全局作用域:全局变量

直接编写在 script 标签之中的JS代码,都是全局作用域;

全局作用域在页面打开时创建,页面关闭时销毁;

局部作用域(函数作用域):局部变量(在全局内不会被找到)

在函数内部声明变量

在函数内部就是局部作用域,这个代码的名字只在函数的内部起作用

调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁;

每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。

隐式全局变量

声明变量使用`var`, 如果不使用`var`声明的变量就是全局变量( 禁用 )

可以再在全局内被找到!!!!!!!

因为在任何代码结构中都可以使用该语法. 那么再代码维护的时候会有问题. 所以除非特殊原因不要这么用.

 var a = 10;  
function test() {
        a = 100;  
        alert(a);  
        alert(this.a);  //找的是全局,函数外部不能调用函数内的a的值,一般函数直接执行,内部this指向全局window
        var a;  //提前
        alert(a); 
    }
// test();  

(function(){
        console.log(a)//命名提前,执行2 a=函数
        var a=5;//提前1
        function a(){}//提前2
        console.log(a)//a已经赋值5
        function b(){}//提前3
        b=6
        console.log(b) //赋值6
        var c = d = b //提前声明4且。bd是隐式全局变量
    })()
console.log(d)//d=b=6,隐式全局
console.log(c)//c是局部变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值