I am ne zha / Jeskson
I am ne zha / Jeskson
Service Worker 的问题在于它在不使用时被终止,并在下次需要时重新启动,因此您不能依赖 Service Workeronfetch和onmessage处理程序中的全局状态。在这种情况下,服务工作者将有权访问 IndexedDB API,以便在重新启动时保持和重用。
Service Worker 不能直接访问 DOM。但是它可以通过响应通过接口发送的消息与它控制的页面进行通信postMessage,并且这些页面可以操作 DOM。
Service Worker 基本上是一个在后台运行的脚本(JavaScript 文件),独立于网页并提供不需要网页或用户交互的功能。Service Worker 的一些主要功能是丰富的离线体验(离线优先 Web 应用程序开发)、定期后台同步、推送通知、拦截和处理网络请求以及以编程方式管理响应缓存。
闭包是函数和声明该函数的词法环境的组合。即,它是一个内部函数,可以访问外部或封闭函数的变量。闭包具有三个作用域链 自己的范围,其中在其大括号之间定义的变量 外部函数的变量 全局变量 让我们以闭包概念为例, ```js function Welcome(name) { var greetingInfo = function (message) { console.log(message + " " + name); }; return greetingInfo; } var myFunction = Welcome("John"); myFunction("Welcome...
在 ES6 中,Javascript 类主要是 JavaScript 现有的基于原型的继承的语法糖。例如,用函数表达式编写的基于原型的继承,如下所示, ```js function Bike(model, color) { this.model = model; this.color = color; } Bike.prototype.getDetails = function () { return this.model + " bike has" +...
提升是一种 JavaScript 机制,其中变量、函数声明和类在代码执行之前被移动到其作用域的顶部。请记住,JavaScript 只提升声明,而不是初始化。我们举一个变量提升的简单例子, ```js console.log(message); //output : undefined var message = "The variable Has been hoisted"; ``` 上面的代码对解释器来说如下所示, ```js var message; console.log(message); message = "The variable Has been hoisted";...
记忆化是一种编程技术,它试图通过缓存以前计算的结果来提高函数的性能。每次调用 memoized 函数时,它的参数都用于索引缓存。如果数据存在,则可以将其返回,而无需执行整个函数。否则执行该函数,然后将结果添加到缓存中。让我们举一个使用 memoization 添加函数的例子 ```js const memoizAddition = () => { let cache = {}; return (value) => { if (value in cache) { console.log("Fetching from cache"); return cache[value];...