"jsbin - link -demo" (https://link.segmentfault.com/?enc=8A%2FzeKNgtlSKJ0KLPkyP%2Bg%3D%3D.2p%2BEiIrfrd781gNDcKPpaS8SJF4r6AHtEXqJWi9D3%2FrEof5f8%2FOQzrsM2GZrhxuaE%2FsFKk5RHWR3hcbD2AFgAA%3D%3D) promise-load function loadImageAsync(url) { return new Promise((resolve, reject) => { let img = new Image() img.src = url img.onload(()=>resolve(img)) img.onerror(()=>reject()) console.log(3); }) } loadImageAsync('https://avatarsabc.githubusercontent.com/u/54520846?s=400&u=5220402538d51b3c67cf208ea16f93cb218fe4d2&v=4').then((imgDom) => { console.log('success'); document.body.appendChild(imgDom) }).catch(() => { console.log('error-Load'); }) 为什么console.log(3) 没有执行
"debounce-version1" (https://link.segmentfault.com/?enc=5M4djQn6RXb97dn5%2FIuSsg%3D%3D.M4IlNX7pUgrfVff4Fyn6tiHAcLHsW1lunvGhImsFK0hElPT8VqDDHU8lYs8DbmtFG8coFyIt9FDu%2BPtPWyqctw%3D%3D) "debounce-version2" (https://link.segmentfault.com/?enc=H7bAur3zI9mr1Gy3yNsiaA%3D%3D.56UgzDeQ8o19EOVC95PM8kK68vn3zxLJZinmVNEXBWtkm2TQkd1DSp04CJ5ZeBZ52w0mTGJF44Y%2B%2FkLmrmlsog%3D%3D) version1 跟 version2的区别是移动了" if (notCalled && immediate) result = func.apply(context, args);" 的位置 我的预期是这两个代码应该执行结果是一致的,都返回1 但是version1 没有防抖成功 function debounce(func, wait, immediate) { var timeout var debounced = function () { var context = this; var args = arguments; var notCalled = !timeout; if (timeout) clearTimeout(timeout); if (notCalled && immediate) result = func.apply(context, args); timeout = setTimeout(function () { if (!immediate) func.apply(context, args); timeout = null; }, wait); }; return debounced; } var counter = 0; var debouncedIncr = debounce( function () { counter++; if (counter < 10) debouncedIncr(); }, 32, true, ); debouncedIncr(); console.log(counter, 1, "incr was called immediately"); setTimeout(function () { console.log(counter, 1, "incr was debounced"); }, 96);
// 设计一个函数 safeGet,可以对任意对象进行处理使其满足 const x = safeGet({ a: 'hello', b: { d: 'world' }, c: [-100, 200, -300], }); x.a() === 'hello' x.b.d() === 'world' x.c[0]() === -100 x.c[100]() === undefined x.c[100](1234) === 1234 x.c.map((e) => e()) === [-100, 200, -300] x.d.e() === undefined x.d.e('optional default value') === 'optional default value' x.y.z.a.b.c.d.e.f.g.h.i.j.k() === undefined function safeGet(data) { // write code here }
问题描述 如下图所示,我分别打印了ObjectFood和ObjectFood[1001] "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/03f9f59d2fe7a095db73ad67c2b7147b.png) 但是输出结果如下图所示 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/e2a505d7a8d3cef390c6eaf75e5ddef9.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/8dfd9c970886ffabd8d943755fc3e8bf.png) 后续尝试了 consile.log(ObjectFood["1001"]) let i = "1001" console.log(ObjectFood.i) 这两种方法均是undefined,求各位帮忙解惑
import { ref, reactive, onMounted } from "vue" import h337 from "heatmapjs" onMounted(() => { console.log("onMounted") heatMapInit() console.log(heat.value) }) const heat = ref(null) const heatmap = ref() // 初始化 heat map const heatMapInit = () => { let heatmapInstance = h337.create({ container: heat.value }) var points = [] var max = 0 var width = 840 var height = 400 var len = 200 while (len--) { var val = Math.floor(Math.random() * 100) max = Math.max(max, val) var point = { x: Math.floor(Math.random() * width), y: Math.floor(Math.random() * height), value: val } points.push(point) } // heatmap data format var data = { max: max, data: points } // if you have a set of datapoints always use setData instead of addData // for data initialization heatmapInstance.addData(data) } 使用报错: heatmap.min.js:9 Uncaught (in promise) TypeError: Cannot assign to read only property 'data' of object '#' at d2._colorize (heatmap.min.js:9:6235) at d2.renderPartial (heatmap.min.js:9:4158) at heatmap.min.js:9:6929 at a2.emit (heatmap.min.js:9:7041) at d2.addData (heatmap.min.js:9:1681) at g2.addData (heatmap.min.js:9:7804) at heatMapInit (heatmap.vue:44:1) at heatmap.vue:13:1 at runtime-core.esm-bundler.js:2675:88 at callWithErrorHandling (runtime-core.esm-bundler.js:158:18)
"MDN" (https://link.segmentfault.com/?enc=XN8%2FpUHoCwjXCRSULTzZAw%3D%3D.liEvU44pcEDs2fiOEf6fU%2FkFPUZvd3ZOeuL%2Fns6IUMOH7nqwtYm4NLxH17HZ9P6zEfiHtefzZoaQfhYJej4pXg0heU1KjG%2FoVMKezKr60yafVvqr4tz2xjxmGAwBAgEab3Ip4S20pwJvVyoh5NAwJXIvmIWTcXw7d1ywpqUmzwCLZuGgHwhNKLUbFt6g%2F7ly%2BY4pBHjzNSmqjBADCzPffPc8wg%2B1KyVHNhN2cUqtwseFRGkUeY05kNLtuM%2FqzKghk%2FFDJq9S5GHzEdk115jkBg7L5GIC68uYSQpgG%2B3OXn8tGiWuok7rpqRRMZoxhaaF9JGikHJTbz90iPWeruVR7w%3D%3D) 说私有属性是原型继承中没有简单替代方案的特性: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241218/de665d2b7807ce216d4a2d38fd66489f.png) 可是不是能用闭包写私有属性吗: function C() { // 私有属性 let value = 0; Object.defineProperty(this, "v", { get: () => value, set: (v: number) => value = v, }); } es6 类写法: class C2 { #value = 0; get v() { return this.#value; } set v(v) { this.#value = v; } } 这两种写法有什么区别吗?
问题 import a from 'module-a'; import b from 'module-b'; console.log(a); console.log(b); 这几行代码是同步执行的,为什么却说 ESM 是异步的。 谁说ESM是异步的? "https://nodejs.org/api/packages.html" (https://link.segmentfault.com/?enc=drFSlgR6t7VMTfJuly16mg%3D%3D.Bz9Y8pwzk7X6sOvShE7A9LU%2F8HNV3rf%2FyoVRyHfIVlUSQz%2BUsBKvj1j7M7cM7wiL) 这里说的 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/227ba8b50ffa8586ccae905b9ccc737e.png) 其他问题 看到几篇文章,大都是说 script标签的加载是异步的,并没有说import是异步 的吧 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/c56cb649d7989600310e509ed4e28ba0.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/9894d9d733a5c669f1de2de9d7e8fd08.png) 补充内容 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250104/ee4ed5e8809abbc2d7ccb7be828ab765.png) 异步是说这个?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241223/feda5f2c776e106f80893021574fd1ed.png) 如图,请问如何实现当检测到姓名为2时,鼠标hover时,不弹出“暂无数据”这个框,姓名为其他值时,hover时,正常显示这个框? 以下是代码截图: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241223/415585a3e1caf7ddced1a64da2611ee4.png)
js发展到了现在,很多东西用js都可以实现,而Lodash本身也是一个js库,也是用来实现一些代码逻辑,我想知道Lodash对于前端的便利性有多少,它是否是前端必须了解的?各位对Lodash的看法如何?
js Promise 返回数组但无法使用 该如何返回结果呢? let element = document.querySelectorAll('.test') let promise = new Promise((resolve,reject) => { let imgs = [] for (var i = 0; i { console.log(e, e.length) }) 在这里打印e,可以看到是个数组,但e.length显示就是0;而且直接使用e[0]就是undefined