随笔分类 - javascript
摘要:defer和async的区别? defer:延迟; async:异步; 先来试个一句话解释仨,当浏览器碰到 script 脚本的时候: 没有 defer 或 async,浏览器会立即加载并执行指定的脚本,“立即”指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的文档元素,
阅读全文
摘要:这里面提出两个方案:基础版和高级版 基础版 getBoundingClientRect 关于这个方法是什么可以看MDN给出的解释:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect 首先给图片一
阅读全文
摘要:如何理解BigInt? BigInt是一种新的数据类型,用于当整数值大于Number数据类型支持的范围时。这种数据类型允许我们安全地对大整数执行算术操作,表示高分辨率的时间戳,使用大整数id,等等,而不需要使用库。 为什么需要BigInt? 在JS中,所有的数字都以双精度64位浮点格式表示,那这会带
阅读全文
摘要:null是对象吗 ?为什么? 答:null不是对象。 原因:虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象然而 null 表示为全零,所以将它错
阅读全文
摘要:什么是js柯里化(curry)? 在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。 举例来说,一个接收3个参数的普通函数,在进行柯里化后,柯里化版本的函数接收一个参数并返回接收下一个参数的函数,该函数返回一个接收第三个参数的函数。最后一个函数在接收第三
阅读全文
摘要:数组去重总结 1. 双层循环 var array = [1, 1, '1', '1']; function unique(array) { // res用来存储结果 var res = []; for (var i = 0, arrayLen = array.length; i < arrayLen
阅读全文
摘要:定义 防抖:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。 节流:每隔一段时间,只执行一次函数。 防抖和节流图解:http://demo.nimius.net/debounce_throttle/ 作用 解决性能问题:在浏览器中,有一些事件(滚动,窗口大小变化)触发的频率过高;对
阅读全文
摘要:废话不多说,直接上代码: function objectFactory() { var obj = new Object(), Constructor = [].shift.call(arguments); obj.__proto__ = Constructor.prototype; var ret
阅读全文
摘要:call实现 call的作用 call() 方法在使用一个指定的 this 值和若干个指定的参数值的前提下调用某个函数或方法。 代码实现 直接上代码: Function.prototype.call2 = function (context) { var context = context || w
阅读全文
摘要:##问题描述 同志们,你们有没有遇到过这样的一个问题,当你在控制台上面敲入0.1+0.2这段代码的时候,惊讶的发现竟然不等于0.3 这真是惊呆我了,为什么JavaScript还有这种“骚”操作? 这种送分题,js却送了命。令人窒息的操作。这个例子很常见,我们不是为了关注这个例子本身,我们需要明白的是
阅读全文
摘要:本文只是总结了各个视图属性的含义,其中⭐处建议背下来,至于兼容性也是非常重要的,具体可以看文末链接。 本文内容分为五大部分: ###1.Window视图属性 innerHeight 和 innerWidth outerHeight 和 outerWidth pageXOffset 和 pageYOf
阅读全文
摘要:###1.typeof 官方文档说明:typeof 操作符返回一个字符串,表示未经计算的操作数的类型。 ####用法: // 数值 typeof 37 'number'; typeof 3.14 'number'; typeof(42) 'number'; typeof Math.LN2 'numb
阅读全文
摘要:这篇文章整理自老姚的JavaScript正则迷你书第一章 1.1. 两种模糊匹配 模糊匹配,有两个方向上的“模糊”:横向模糊和纵向模糊。 1.1.1. 横向模糊匹配 横向模糊指的是,一个正则可匹配的字符串的长度不是固定的,可以是多种情况的。 其实现的方式是使用量词。譬如 {m,n},表示连续出现最少
阅读全文
摘要:这篇博客整理自红宝书p162-p174,面试经常会问到。 ##1.原型链继承 将父类的实例作为子类的原型 function Parent() { this.isShow = true this.info = { name: "yhd", age: 18, }; } Parent.prototype.
阅读全文
摘要:今天我们来详细讲一下JavaScript V8引擎垃圾回收机制。 我们知道js原始数据类型是存储在栈空间中的,引用类型的数据时存储在堆空间中的。所以,我们就从这两方面来介绍**“栈中的垃圾数据”和”堆中的垃圾数据”**是如何回收的。 ##调用栈中的数据是如何回收的 我们先看一段代码: 1 funct
阅读全文
摘要:##1.全局执行上下文中的this function foo() { console.log(this)//指向window } foo() 这段代码是在全局环境下执行的,所以this指向window ##2.通过函数的call方法设置 let bar = { myname: "x", age: 1
阅读全文
摘要:##前言 在JavaScript这门语言中,有一个非常重要但又难以掌握,一个近乎神话的概念,闭包。如果你对词法作用域有一定的理解,那么闭包的概念几乎是不言自明了。 回忆我写了这么久的JavaScript代码却完全不理解闭包是什么,直到最近读了《浏览器原理》和《你不知道的js》才对闭包有一个比较清晰的
阅读全文
摘要:##Promise对象含义和基本用法 ###1.Promise的含义 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器
阅读全文
摘要:##ES6 对象新增方法 ###1.Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符()和 严格相等运算符(=)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就
阅读全文
摘要:##ES6中关于字符串的常用方法 ###1.for...of...遍历字符串 for (let codePoint of 'foo') { console.log(codePoint) } // "f" // "o" // "o" 以前都是先把字符串转化成数组,现在有这个方法真是太便利了。 ###2
阅读全文

浙公网安备 33010602011771号