+-
SegmentFault 思否技术周刊 -- JavaScript 的那些事

JavaScript 是一门基于原型、头等函数的语言,是一门多范式的语言,它支持面向对象程式設計,指令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。


小编整理了思否社区关于 JavaScript 的优质技术文章和热门问答,欢迎大家阅读~


温馨提示:点击文章和问题的标题即可查看详情。


知识进阶


《JS 阻塞渲染,这么多年我理解错啦?》

在中文社区,这么多年一直流传一个说法:JS 线程负责执行 JS,GUI 渲染线程负责渲染,这两者是互斥的,所以 JS 执行时会阻塞渲染。

但随着 Dev Tools 使用的增多,逐渐开始怀疑以上说法。本文会以实际案例来解释为什么JS阻塞渲染。 
 
《JavaScript 之原型、原型链》

其他编程语言如 Java 等使用 new 命令时,都会调用“类”的构造函数。但是,JavaScript 没有“类”,本身并不提供一个 class 实现(虽然在 ES6 中提供了 class 关键字,但其只是语法糖,JavaScript 仍然是基于原型的)。于是,JavaScript 作了一个简化的思想,new 命令后面跟的不是类,而是构造函数,用构造函数生成实例对象,但其缺点是无法共享属性和方法。于是,就为构造函数设置了一个 prototype 属性,这个属性包含一个对象(prototype 对象)。所有实例对象需要共享的属性和方法都放在这个对象里,那些不需要共享的属性和方法就放在构造函数里。

《JavaScript Promise 的理解和使用》

  • 什么是Promise?
  • Promise怎么用?

  • 《5个一定要学会的 JavaScript 新特性》

    JavaScript 在不断地升级迭代,越来越多的新特性让我们的代码写起来变得简洁有趣,这篇文章会介绍5个新特性,一起研究一下吧。

    《你可能不了解的 Promise 微任务类型》

    ECMA 规范中把 Promise 微任务分成了 NewPromiseReactionJob 和 NewPromiseResolveThenableJob 两种类型,下面结合规范来分别看下这两种微任务的产生时机和执行内容。

    《JavaScript 闭包》

    在 JavaScript 中闭包描述的是 function 中外层作用域的变量被内层作用域引用的场景,闭包的结构为内层作用域保存了外层作用域的变量。
     
    本文将带你用正确姿势看待 JavaScript 闭包。
     
    《JavaScript 内存泄漏》

    在传统的网页开发时无需过多考虑内存管理,通常也不会产生严重的后果。因为当用户点击链接打开新页面或者刷新页面,页面内的信息就会从内存中清理掉。
     
    随着 SPA(Single Page Application)应用的增多,迫使我们在编码时需要更多的关注内存。因为如果应用使用的内存逐渐增多会直接影响到网页的性能,甚至导致浏览器标签页崩溃。
     
    这篇文章,我们将研究 JavaScript 编码导致内存泄漏的场景,提供一些内存管理的建议。
     
    《JS 中的块作用域和遮蔽效应》

  • JS 中的代码块是什么?
  • 块级作用域是什么?
  • 遮蔽效应是什么?
  • 非法遮蔽是什么?
  • 块级作用域和词法作用域

  • 应用与实践


    《js 生成 UUID 的几种方法》

    UUID(Universally Unique IDentifier) 全局唯一标识符。

    UUID 是一种由算法生成的二进制长度为128位的数字标识符。UUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f
    范围内的一个32位十六进制数。

    在理想情况下,任何计算机和计算机集群都不会生成两个相同的 UUID。
     
    《js 数组去重常见的七种方法》

    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。item 是当前元素的值,index 是当前元素的索引值。

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。利用 indexOf() 查询到数组的下标,看是否等于当前的下标,相等的话就返回,否则不返回值。


      《JavaScript 深拷贝的几种方法》

    浅拷贝是创建一个新对象,这个对象有着原始对象属性值的拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的是内存地址 。如果不进行深拷贝,其中一个对象改变了对象的值,就会影响到另一个对象的值。


    深拷贝是将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。


      《js 数据类型转换的几种方式》

  • 强制类型转换 String(),toString() 转字符串类型
  • 字符串转数值类型 Number parseInt()
  • 字符串转数组split,数组转字符串join
  • .......

      《JavaScript 的几种继承方式》

  • 原型链继承
  • 借助构造函数继承(经典继承)
  • 组合继承:原型链 + 借用构造函数(最常用)
  • 原型式继承 (Object.create)
  • 寄生式继承
  • 寄生组合式继承(最理想)
  • ES6 中的继承

  •   《让你事半功倍的 JS utils工具函数》

    今日分享一篇积累和收集了很久的 JS utils 工具函数,文章代码量较多,建议收藏起来慢慢看,当哪一天需要用到的时候,打开你尘封已久的收藏夹,相信能让你的业务代码开发事半功倍。


    汇集了时间相关,DOM 相关,URL 相关,判断相关,图片相关,缓存相关等。部分逻辑处理较为简单,如果是业务量较为复杂的情况建议要斟酌使用,但对于大部分的项目应该是绰绰有余。接下来就进入代码部分吧~
     
    《2022年的 JavaScript 开发工具》

    编译器负责将输入代码转换为某种目标输出格式。出于我们的目的,我们关注的是那些支持将现代 JavaScript 和 TypeScript 转换成特定版本的 ECMAscript 的编译器,这些 ECMAscript 兼容浏览器和最新版本的 Node.js。
     
    《手动实现一个JS执行引擎》

  • 支持解析js脚本生成语法树、格式化代码
  • 支持运行完整js脚本
  • 支持安全模式运行单行表达式
  • 支持设置超时时间
  •  
    《js获取页面尺寸》

    在大多数情况下, document.documentElement.clientWidth  都能返回正确的值, 但在IE6的 quirks 模式中,document.body.clientWidth 返回正确的值,所以要做兼容处理。 另外 clientWidth 和 clientHeight 都是只读属性,不能对它们赋值。

    面试真题


    《js面试题(基础)梳理》

  • JavaScript有几种数据类型?
  • JavaScript最大安全数字与最小安全数字?
  • 深拷贝与浅拷贝的区别?
  • 闭包是什么?
  •  
    《js面试题(进阶)梳理》

  • undeclared 与 undefined 的区别?
  • let & const与 var 的区别?
  • 获取DOM元素有哪些方法?
  • 操作DOM元素有哪些方法

  • 热门问答


    温馨提示:点击问题即可跳转查看回答内容哦~

  • js 怎么获取节点下所有子节点的文本并存到数组中?
  • js 实现文本压缩可以采用什么方法?
  • 如何用 js 实现 java 中 int 强制转换为 byte 类型,即(byte)
  • js 递归修改树状结构
  • js 双存循环如何快速高效判断数组里面的条件是否满足
  • js 如何获取今日开始时间戳和结束时间戳
  • js 如何把内存循环里面的字段提出来拼接外层循环的字段
  • js 如何判断数组里对象的 value 是否有重复



  • - END -

    相关课程推荐

    ↓ 点击图片了解课程详情 ↓