js同步和异步同步

前一个任务结束以后再执行下面一个任务,程序的执行顺序与任务的排列顺序是一致的

同步任务都在主线程上执行,形成一个执行线

异步

前一个任务没结束之前程序还可以执行别的任务

js的异步是通过回调函数实现的

一般情况下异步有三种类型

1、普通事件,比如click,resixe等

2、资源加载,比如load,error等

3、定时器,包括setInterval,setTimeout等

异步任务的相关回调函数添加到任务队列中

js执行机制
    1、先执行栈中的同步任务
    2、异步任务(回调函数)放入任务队列中
    3、一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,然后被读取的异步任务结束等待状态,进入执行栈,开始执行

由于主线程不断地重复获得任务、执行任务、再获取任务、再执行,所以这种机制叫事件循环

    location对象

window对象给我们提供了一个location属性用于获取或者设置窗体的URL,并且可以用于解析URL。因为这个属性返回的是一个对象,所以这个属性也叫location对象
    URL
    统一资源定位符,是互联网上标准资源的地址。互联网上每个文件都有一个唯一的URL,他包含了信息指出文件的位置以及浏览器怎么处理
    URL的一般语法格式是
    protocol://host[:post]/path/[?query]#fragment
    http://www.itcast.cn/index.html?name=andy&age=18#link
    protocol:通信协议 常用的有HTTP,ftp,maito等
    host:主机(域名)
    port:端口号省略时用方案的默认端口号
    path:路径 一般用来表示主机上的一个目录或文件地址
    query:参数 以键值对的形式通过&符号隔开
    fragment:片段 #后面内容常见于链接

    loaction常见的属性 !!!!
    loaction.href 获取或者设置整个URL !!!!!!
    location.host 返回主机(域名)
    location.port 返回端口号 如果没有端口号返回空字符串
    location.pathname 返回路径
    location.search 返回参数
    location.hash 返回片段 #后面内容常见于链接

    location常用的方法
    location.assign() 记录浏览历史可以后退
    location.replace() 不记录浏览历史不可以后退
    location.reload() 重新加载页面,相当于刷新
     <button>123</button>
<script>
var btn = document.querySelector('button')
btn.addEventListener('click', function () {
location.assign('http://www.baidu.com')
// loaction.replace('http://www.baidu.com')
location.reload()
})
</script>
    navigator对象
    navigator对象包含了有关浏览器的信息,这个里面有很多的属性,常用的是userAgent,该属性可以返回由客户机发送服务器的user-agent头部的值
     if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows
phone)/i))){
window.location.href="" //手机
}else{
window.location.href="" //电脑
}

    history对象

    back()对象 可以后退功能
    forward()对象 可以前进功能
    go(参数) 前进后退功能 如果参数是1就前进一个页面 如果是-1就后退一个页面
     <a href="./day2.html">去</a> <button class="bt1">后退</button>
<script>
var btn = document.querySelector('.bt1')
btn.addEventListener('click', function () {
history.go(-1)
})
</script>

JS 执行机制笔记的更多相关文章

  1. 浏览器中js执行机制学习笔记

    浏览器中js执行机制学习笔记 RiverSouthMan关注 0.0772019.05.15 20:56:37字数 872阅读 291 同步任务 当一个脚本第一次执行的时候,js引擎会解析这段代码,并 ...

  2. JS学习笔记:(三)JS执行机制

    首先我们先明确一点:JavaScript是一门单线程语言.单线程也就是说同一时间只能执行一个任务,所有的任务都必须排队顺序执行.那么如果一个任务耗时很长,阻塞了其它任务的执行,就会给用户造成不友好的体 ...

  3. JS执行机制详解,定时器时间间隔的真正含义

     壹 ❀ 引 通过结果倒推过程是我们常用的思考模式,我在上一篇学习promise笔记中,有少量关于promise执行顺序的例子,通过倒推,我成功让自己对于js执行机制的理解一塌糊涂,js事件机制,事件 ...

  4. 浅谈js执行机制

    关于js执行机制,老早之前就一直想写篇文章做个总结,因为和js执行顺序的面试题碰到的特别多,每次碰到总是会去网上查,没有系统地总结,搞得每次碰到都是似懂非懂的感觉,这篇文章就系统的总结一下js执行机制 ...

  5. 从一道看似简单的面试题重新理解JS执行机制与定时器

     壹 ❀ 引 最近在看前端进阶的系列专栏,碰巧看到了几篇关于JS事件执行机制的面试文章,因为我在之前一篇 JS执行机制详解,定时器时间间隔的真正含义 博文中也有记录JS执行机制,所以正好用于作为测试自 ...

  6. js执行机制

    js是单线程的,为什么可以执行异步操作呢? 这归结与浏览器(js的宿主环境)通过某种方式使得js具备了异步的属性. 区分进程和线程: 进程:正在运行中的应用程序.每个进程都自己独立的内存空间.例如:打 ...

  7. JS执行机制--事件循环--笔记

    JS的解析是由浏览器中的JS解析引擎完成的.JS是单线程运行,也就是说,在同一个时间内只能做一件事,所有的任务都需要排队,前一个任务结束,后一个任务才能开始.但是又存在某些任务比较耗时,如IO读写等, ...

  8. 摘录和再编:彻底弄懂JS执行机制

    网文: https://juejin.im/post/59e85eebf265da430d571f89 并发模型和事件循环:https://developer.mozilla.org/zh-CN/do ...

  9. 简单而面试中又常见的知识点:JS执行机制

        在开始讲解之前,我们先来看一段代码: console.log('1'); setTimeout(function() { console.log('2'); process.nextTick( ...

随机推荐

  1. 数据可视化基础专题(十四):pyecharts 基础(一)简单上手

    1.引言 文档位于 https://pyecharts.org/#/zh-cn/intro 示例位于 https://gallery.pyecharts.org/#/README echarts 官网 ...

  2. Python并发编程06 /阻塞、异步调用/同步调用、异步回调函数、线程queue、事件event、协程

    Python并发编程06 /阻塞.异步调用/同步调用.异步回调函数.线程queue.事件event.协程 目录 Python并发编程06 /阻塞.异步调用/同步调用.异步回调函数.线程queue.事件 ...

  3. uPDF-功能强大的PDF文件处理小工具

    前几天因为工作原因,需要将一个PDF压缩一下. 网上找了半天,要么收费,要么就是转换的质量不太好.论坛也找到一些破解的软件,但是总有点不太合适,有些功能还挺复杂.也有些在线转换的,又考虑到自己较为隐私 ...

  4. Swift开发笔记

    Swift开发笔记(一) 刚开始接触XCode时,整个操作逻辑与Android Studio.Visual Studio等是完全不同的,因此本文围绕IOS中控件的设置.事件的注册来简单的了解IOS开发 ...

  5. bzoj3211花神游历各国&&bzoj3038上帝造题的七分钟2*

    bzoj3211花神游历各国 题意: n个数的序列,m个操作,操作两种:区间开根(向下取整)和区间求和.n≤100000,m≤200000,序列中的数非负且≤109. 题解: 一个≤109的数开6次根 ...

  6. Python | Python初学者的自我修养,找到自己的方向

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第21篇文章,我们继续多线程的话题. 上周的文章当中我们简单介绍了线程和进程的概念,以及在Python当中如何在主线 ...

  7. 47 张图带你 MySQL 进阶!!!

    我们在 MySQL 入门篇主要介绍了基本的 SQL 命令.数据类型和函数,在局部以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我 ...

  8. 时间复杂度为O(nlogn)的排序算法

    时间复杂度为O(nlogn)的排序算法(归并排序.快速排序),比时间复杂度O(n²)的排序算法更适合大规模数据排序. 归并排序 归并排序的核心思想 采用"分治思想",将要排序的数组 ...

  9. spring-cloud-alibaba-sentinel和feign配合使用,启动报Caused by: java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List

    背景 我在学习spring-cloud-alibaba技术栈期间,在学习服务熔断与限流的时候,服务启动发生了以下异常 #这是控制台最上面的 sun.misc.Unsafe.park(Native Me ...

  10. 获取DataGridview中某列的所有数据

    /// <summary> /// /// </summary> /// <typeparam name="T"></typeparam& ...