![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javaScript
非长道
这个作者很懒,什么都没留下…
展开
-
==和===到底有什么区别
很多时候我们会对某个语言的某个特性争论不休,通常都只是因为我们不知道它是怎么实现的。其实解决这个疑惑的最好的方法,就是弄清楚 == 和 === 内部的实现机制。例如 Google v8 就是开源的,只要看看里面的代码,就能知道到底是怎么一回事了。但是我相信绝大多数人都是没有这个耐心的——我知道大家都在忙着挣钱养家——好吧,那咱就不看 Google v8 了,看看 ECMA-262 吧,里面已经把...转载 2018-10-11 10:06:56 · 2153 阅读 · 1 评论 -
C++ 与 JS 移植
1.C++的int,float,string 可以被引用,而js 的不行; 如果用到函数中的引用参数,js只能把引用的基本类型返回,再赋值;2. js的 switch 可以case 字符串,而C++ 不行;3. C++ 如果一个成员属性是数组(或Map)等,那会自动构造初始化数组; js中,数组需要手动创建4. C++的值(非指针或引用),= 等...原创 2019-05-10 15:16:33 · 1732 阅读 · 0 评论 -
js for循环中的回调同步问题
回调函数在for循环中,回调的顺序就会不确定,不按顺序。以下方法能使其同步执行:一、使用 async 和 awaitconst delay = ms => new Promise(resolve => setTimeout(resolve, ms));(async function loop() { for (let i = 0; i < 10; i++) {...原创 2019-03-27 15:10:32 · 10773 阅读 · 1 评论 -
JS 深拷贝与浅拷贝
一、数据类型数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。基本数据类型的特点:直接存储在栈(stack)中的数据 引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地...转载 2018-12-24 15:16:53 · 1237 阅读 · 0 评论 -
深入理解js立即执行函数
看过jQuery源码的人应该知道,jQuery开篇用的就是立即执行函数。立即执行函数常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲突),开发者们想到的解决办法就是使用立即执行函数。1.什么是立即执行函数(IIFE)在了解立即执行函数之前先明确一下函数声明、函数表达式及匿名函数的形式,如下图:接下来看立即执行函数的两种常见形式:...转载 2018-12-24 11:40:50 · 4226 阅读 · 5 评论 -
js基础类型的扩展 string 和 String
扩展基础类型的函数interface String { toBool: () => boolean;}String.prototype.toBool = function (): boolean { return this.valueOf() === '1' || this.valueOf().toUpperCase() === 'TRUE' || false;}...原创 2018-12-20 15:04:21 · 1148 阅读 · 0 评论 -
分析 JavaScript 的数据类型与变量
原文链接:https://segmentfault.com/a/1190000017016407这篇文章,来聊聊 JS 中的数据类型与变量。这是在学习 JS 时最基础的一类问题,但却很重要。希望我的分享有帮助到你。文章开头,我先提几个面试中遇到的问题:比如:如何理解参数的按值传递?什么是暂时性死区?什么是变量提升?全局变量和 window 的属性有什么区别?为什么?....转载 2018-12-19 14:05:10 · 839 阅读 · 0 评论 -
理解js中的值传递
// javascript 代码function setName(obj) { // 这里 obj 和 person 指向内存中的同一块地址,a 地址 obj.name = &quot;Nicholas&quot;; // 这里 obj 指向了新对象所在的地址( b 地址),切断了和 a 地址的联系 obj = new Object(); obj.name = &quot;Greg&quot;...原创 2018-11-06 18:08:41 · 953 阅读 · 0 评论 -
js Tips
clone(flags: number) { let name = 'ClassName' + this._type; let obj = new window[name]; obj.assign(this, flags); return obj;}根据类型名字,新建对象原创 2018-10-22 18:07:07 · 1506 阅读 · 0 评论 -
js中怎么理解按位取反
转自 https://segmentfault.com/q/1010000005697515~ 运算符查看表达式的二进制表示形式的值,并执行位非运算。Javascript 按位取反运算符 (~) ,对一个表达式执行位非(求非)运算。如 ~1 = -2; ~2 = -3;按位取反大体流程是这样的:就来看看~1的计算步骤:将1(这里叫:原码)转二进制 = 00000001 按位...转载 2018-10-10 17:41:15 · 3122 阅读 · 0 评论 -
TS 优化
当一个函数内反复出现全局函数时,应考虑声明临时变量来替代,比如Math.max,我们可以在函数开始处声明let qMax = Math.max; 在后续代码中使用qMax而不是Math.max 因:全局函数的访问速度要远低于临时变量; TS代码压缩时,全局函数不能被压缩但临时变量可以,qMax可以被压缩成一个字母,1 vs X, 优势明显 ...原创 2018-10-08 18:43:55 · 1627 阅读 · 0 评论 -
深拷贝 赋值
// 实现克隆Clone // let obj = new window[this._type]; // let obj = DObject.deepCopy(this); // let obj = this.constructor(); let obj = Class.createObject(this._type...原创 2019-05-16 11:06:23 · 1329 阅读 · 0 评论