首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么网站的CSSJS会带有vversion参数

version=23389"/> 加参数的静态资源有两种可能:   第一、脚本并不存在,而是服务端动态生成的。 因此带上版本号,以示区别。...第二、客户端会缓存这些CSSJS文件,每次更新了 JS CSS 文件后,改变版本号,客户端浏览器就会重新下载新的JSCSS文件,起到刷新缓存的作用。...原理: 例如 .htaccess 设置的 CSS、JS 缓存都有一个过期时间,如果在访客的浏览器已经缓存了这些文件,在这些缓存未过期之前,浏览器只会优先从缓存读取这些 CSS 和 JS 文件,如果你在服务器上修改了这些文件...如原先 HTML 的 CSS 调用语句如下: 注意:部分代理缓存服务器不会缓存网址包含 "?" 的资源,所以方法二可能会导致你原先的缓存功能失效,可以改用第一种方法。

4.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

JavaScript为什么12.toString会报错?

在前面的文章,我们已经从运行时的角度了解过 JavaScript 的知识内容,在接下来的几节课,我们来了解一下 JavaScript 的文法部分。...概述 我们先来看一看 JavaScript 的词法定义。JavaScript 源代码的输入可以这样分类: 1. WhiteSpace 空白字符 2. LineTerminator 换行符 3....(称) 是 U+0009,是缩进 TAB 符,也就是字符串写的 \t ; 2. 是 U+000B,也就是垂直方向的 TAB 符 \v,这个字符在键盘上很难打出来,所以很少用到; 3. ...是 U+000C,Form Feed,分页符,字符串直接量写作 \f ,现代已经很少有打印源程序的事情发生了,所以这个字符在 JavaScript 源代码很少用到; 4. ...这个字符也叫做“bit order mark”; 此外,JavaScript 支持所有的 Unicode 的空格分类下的空格,我们可以看下表: 很多公司的编码规范要求 JavaScript 源代码控制在

76510

JavaScript ,什么时候使用 Map 胜过 Object

JavaScript ,对象是很方便的。它们允许我们轻松地将多个数据块组合在一起。 在ES6之后,又出了一个新的语言补充-- Map。...因此,Map 在当今的 JavaScript 社区仍然没有得到充分的使用。 在本文本,我会列举一些应该更多考虑使用 Map 的一些原因。...为什么对象不符合 Hash Map 的使用情况 在 Hash Map 中使用对象最明显的缺点是,对象只允许键是字符串和 symbol。...性能差异 在 JavaScript 社区,似乎有一个共同的信念,即在大多数情况下,Map 要比 Object 快。有些人声称通过从 Object 切换到 Map 可以看到明显的性能提升。...图片 虽然我们的大多数人永远不会在一个 Object Map 拥有超过1 00 万的条数据。对于几百几千个数据的规模,Map 的性能至少是 Object 的两倍。

1.9K40

为什么说:JavaScript 模块的默认导出很糟糕

我们知道,JavaScript 模块有两种方法来定义导出:默认导出和命名导出。在本节,我们来看下为什么默认导出是一种糟糕的做法,会导致不好的开发体验。...为什么 subtract 是默认的,而 add 是一个命名的导出? ps:我举的例子,可能有点刻意,但随着模块的复杂,类似这种情况有常有的 考虑到开发人员使用一个他们不熟悉且复杂的模块。...那么,这个下面的列表没有展示什么呢?没错,就是默认导出。...在命名导出,如果哪天我们的方法名改了,那么IDE 会提示我们对应的方法不存在,我们可以更好的重构。对于默认导出,IDE 是没有反馈的。...最后,你可能也在想,"我使用的框架工具几乎要求我们默认导出一个函数组件"。如果组件很多,我们可以通过使用 "index.js" 来解决这个问题。

81620

为什么 JavaScript 0.1+0.2 不等于 0.3 ?

jACCJmSYBQAwXyIg 作者:刘洋 在 js 中进行数学的运算时,会出现0.1+0.2=0.300000000000000004的结果,一开始认为是浮点数的二进制存储导致的精度问题,但这似乎不能很好的解释为什么在同样的存储方式下...一、浮点数的二进制存储 JavaScript遵循IEEE754标准,在64位存储一个数据的有效数字形式。...因此,JavaScript提供的有效数字最长为53个二进制位(尾数部分52位+被省略的1位)。...如图,可以看到近似需要看三位,保留位(近似后的最低位)、近似位(保留位的后一位)、粘滞位(sticky bit 近似位后的所有位进行运算后看作一位)。...四、总结思考 由于IEEE754标准,这样的“bug”不止在JavaScript中会出现,在所有采用该标准的语言中都会存在,实际编程可以通过设置精度保留位数等方式解决。

1.7K10

强迫症治愈:如何在MATALB移除“警告:名称不存在不是目录”的警告信息

作为强迫症患者,总是见不得MATLAB打开后,命令窗口弹出一堆“警告:名称不存在不是目录:XXXXXXX”,如图1所示: 图1 警告信息 起初以为是默认搜索路径问题,于是乎打开设置路径对话框,但发现警告信息的路径并没有相关路径...,如下图2示: 图2 搜索路径 紧接着又用path命令查看pathdef.m存储的路径,结果发现里面还保留有图1所警告的所有路径,极有可能是pathdef.m存储的路径与图2所显示的路径不一致造成的...于是抱着试一试的心态,尝试删掉pathdef.m多余的路径,在命令窗口中输入如下命令: edit pathdef.m 随机来到了代码编辑区域,删掉图1的路径,保存关闭重启MATLAB,警告信息果然不见了...参考资料:mathworks.com/help/matlab/ref/path.html 如需转载,请在公众号回复“转载”获取授权,如未经授权擅自搬运抄袭的,本公众号将保留一切追责权利!

1.8K60

JavaScriptPromise里的代码为什么比setTimeout先执行?

所以,我们首先应该形成一个感性的认知:一个 JavaScript 引擎会常驻于内存,它等待着我们(宿主)把 JavaScript 代码或者函数传递给它执行。...在 ES3 和更早的版本JavaScript 本身还没有异步执行代码的能力,这也就意味着,宿主环境传递给 JavaScript 引擎一段代码,引擎就把代码直接顺次执行了,这个任务也就是宿主发起的任务...宏观和微观任务 JavaScript 引擎等待宿主环境分配宏观任务,在操作系统,通常等待的行为都是一个事件循环,所以在 Node 术语,也会把这个部分称为事件循环。...在宏观任务JavaScript 的 Promise 还会产生异步代码,JavaScript 必须保证这些异步代码在一个宏观任务完成,因此,每个宏观任务又包含了一个微观任务队列: 有了宏观任务和微观任务机制...Promise 是 JavaScript 的一个定义,但是实际编写代码时,我们可以发现,它似乎并不比回调的方式书写更简单,但是从 ES6 开始,我们有了 async/await,这个语法改进跟 Promise

82920

《你不知道的JavaScript》:js为什么没有类?

类--是一种代码的组织结构形式,是一种在软件对真实世界问题领域的建模方法。类有三个核心概念:封装、继承和多态。...在软件,对不同的交通工具重复定义载人能力等方法是没有意义的,只要在Vehicle类定义一次,然后在Car类时,只要声明它继承(扩展)了Vehicle类的基础定义就行。...在javascript也有类似的语法,但是和传统的类完全不同。 js只有对象,没有类这个概念。 类意味着复制,传统的类被实例化时,它的行为会被复制到实例。类被继承时,行为也会被复制到子类。...javascript设计模式二:策略模式 javascript设计模式三:代理模式 javascript设计模式四:迭代器模式 javascript设计模式五:原型模式 javascript...设计模式六:发布-订阅模式(观察者模式) javascript设计模式七:模板方法模式 javascript设计模式八:职责链模式 javascript设计模式九:中介者模式 javascript

1.6K30

为什么空合并运算符 (??) 在 JavaScript 至关重要?

JavaScript开发者都曾经有过这样的经历——在使用变量之前必须检查它是否为nullundefined。这导致了许多重复的条件检查,可能会使我们的代码变得混乱不堪。...随着在ECMAScript 2020引入了nullish coalescing(空值合并)操作符,我们现在有了一种更清晰的处理nullundefined值的方式。...在本文中,我将解释nullish coalescing操作符是什么,演示如何使用它,并讨论为什么它是JavaScript语言中如此重要的一个部分。Nullish Coalescing操作符是什么?...是在ECMAScript 2020引入的逻辑运算符,用于处理nullundefined的默认值。它返回第一个操作数,如果它不是nullundefined。否则,它返回第二个操作数。...在这种情况下,该操作符用于检查数组特定索引是否为nullundefined,并在是的情况下提供默认值。比较 || 和 ??||(逻辑)和??

16040

javascript函数试编程范式,为什么要学习函数式编程

函数试编程范式 为什么学习函数式编程 函数式编程是一个非常古老的概念, 早于第一台计算机的诞生 为什么现在还要学习函数式编程?...有很多库可以帮助我们进行函数式开发, lodash、underscore、ramda 函数式编程概念 函数式编程(英语:functional programming)称函数程序设计,又称泛函编程,是一种编程范型...面向对象的思维方式:把现实世界的事物抽象成程序世界的类和对象,通过封装继承多态来演示事物事件的关系 函数式的思维方式: 把现实世界的事物和事物之间的联系抽象到程序世界(对运算过程进行抽象) 程序的本质...当使用函数式编程的时候一定会有一些函数,这些函数可以无数次的重用,所以函数式编程的好处就是可以让代码进行重用,这些函数可以组合成功能更强大的函数 函数是一等公民 函数是一等公民(英文:First-class citizen) JavaScript...由于函数与其他数据类型地位平等,所以在 JavaScript 语言中又称函数为 第一等公民。

28410

【剑指offer:数组数字出现的次数I】使用异运算来分组(JavaScript实现)

解法:位运算 这题和下面两题类似,要想 O(1) 的空间复杂度,就得用位运算: 【LeetCode 136.只出现一次的数字 I】巧用异运算 【LeetCode 137.只出现一次的数字 II】三种解法...:哈希表、数学技巧和位运算(JavaScript 实现) 解题的关键是:用异运算,将数组分成两个子数组,然后对于子数组来说,就回到了 leetcode136 这题的解题思路。...整体的算法流程是: 对所有元素进行异操作,最后的结果就是那两个出现 1 次的数异的结果 找到上一步异结果的第一个非 0 的二进制位 bit 以上一步的二进制位将数组分成 2 个子数组,一个是第...bit 位为 0 的一组,一个是第 bit 不为 0 的一组 将各组的数字重新进行异运算,最后的 2 个结果,就是题目要求 代码实现如下: // ac地址:https://leetcode-cn.com

1.1K30

如何判断Javascript对象是否存在

Javascript语言的设计不够严谨,很多地方一不小心就会出错。 举例来说,请考虑以下情况。 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明。...myObj) { var myObj = { };   } 为什么加了一个var以后,就不报错了?难道这种情况下,if语句做判断时,myObj就已经存在了吗?...Javascript解释器,只"提升"var命令定义的变量,对不使用var命令、直接赋值的变量不起作用,这就是为什么不加var会报错的原因。...this.myObj) { this.myObj = { };   } 在全局变量的层面,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。...因为null指的是已经赋值为null的空对象,即这个对象实际上是有值的,而undefined指的是不存在没有赋值的对象。

2.8K110

ES2020 系列:可选链 ?. 为啥出现,我们能用它来干啥?

即使中间的属性不存在,也不会出现错误。 “不存在的属性”的问题 如果你才刚开始读此教程并学习 JavaScript,那可能还没接触到这个问题,但它却相当常见。...就像你所看到的,在代码我们仍然重复写了好几遍对象属性名。例如在上面的代码,user.address 被重复写了三遍。 这就是为什么可选链 ?. 被加入到了 JavaScript 这门编程语言中。...如果我们希望它们的一些也是可选的,那么我们需要使用更多的 ?. 来替换 .。 不要过度使用可选链: 我们应该只将 ?. 使用在一些东西可以不存在的地方。...来安全地读取删除,但不能写入: 可选链 ?. 不能用在赋值语句的左侧。 例如: let user = null; user?....,仅在当左边部分不存在也没问题的情况下使用为宜。以保证在代码中有编程上的错误出现时,也不会对我们隐藏。 现代 JavaScript 教程:开源的现代 JavaScript 从入门到进阶的优质教程。

92040

探索JavaScriptNull和Undefined的深渊

探索JavaScriptNull和Undefined的深渊 本文翻译自: https://modernweb.com/exploring-the-abyss-of-null-and-undefined-in-javascript.../ 在讨论JavaScript的原始数据类型时,大多数人都了解基本知识,从String,Number和Boolean开始。...了解 null 和 undefined 在JavaScript,null是语言关键字,不代表可识别的对象值。换句话说,这表示“没有值”。虽然相似,但undefined实际上表示值不存在。...尝试访问不存在值的值时通常会遇到此问题。在这种情况下,JavaScript是一种动态的,弱类型的语言,它将仅默认为一个undefined值,而不会引发错误。...由于它是一个外部API,因此尝试检索不存在的元素会返回一个null值,而不是undefined。 通常,如果您需要为变量属性分配非值,将其传递给函数从函数返回,null则几乎总是最佳选择。

70010

初探JavaScript(四)——作用域链和声明提前

如果在函数f()声明一个局部变量也为g,则全局变量就会被局部变量覆盖 ? 2.作用域和声明提前   看到Javascript作用域这块,可以说颠覆了以前我对作用域的认识。...对于第二次执行结果“check now”没有什么特别的,为什么第一次输出的不是“yoyo”而是“undefined”。   ...每一段Javascript代码(全局代码函数)都有一个与之相关联的作用域链,这个作用域链就是一个对象列表链表。...比如当Javascript需要查找变量x的值时,它会从链的第一个对象开始,如果该对象有一个名为x的属性,则直接使用,如果不存在名为x的属性,则会继续向链上的下一个对象查找,如此递归下去直到找到。...如果整个链上都找不到,则认为不存在x这个属性。

68350
领券