相关疑难解决方法(0)

JavaScript中使用"严格"做什么,背后的原因是什么?

最近,我通过Crockford的JSLint运行了一些我的JavaScript代码,它给出了以下错误:

第1行问题1:缺少"使用严格"声明.

做一些搜索,我意识到有些人会加入"use strict";他们的JavaScript代码.一旦我添加了语句,错误就会停止显示.不幸的是,谷歌没有透露这个字符串声明背后的历史.当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么.

那么它是"use strict";什么,它意味着什么,它是否仍然相关?

当前的任何浏览器都会响应"use strict";字符串还是将来使用?

javascript syntax jslint use-strict

7339
推荐指数
29
解决办法
105万
查看次数

如何快速清除JavaScript对象?

使用JavaScript数组,我可以使用单个赋值将其重置为空状态:

array.length = 0;
Run Code Online (Sandbox Code Playgroud)

这使得数组"显示"为空并准备重用,据我所知,这是一个单一的"操作" - 即恒定时间.

是否有类似的方法来清除JS对象?我知道我可以迭代它的字段删除它们:

for (var prop in obj) { if (obj.hasOwnProperty(prop)) { delete obj[prop]; } }
Run Code Online (Sandbox Code Playgroud)

但这具有线性复杂性.

我也可以把对象扔掉并创建一个新对象:

obj = {};
Run Code Online (Sandbox Code Playgroud)

但是"混杂"创建新对象会导致IE6上的垃圾收集问题.(如此处所述)

javascript performance

159
推荐指数
6
解决办法
22万
查看次数

为什么扩展本机对象是一种不好的做法?

每个JS意见领袖都说扩展原生对象是一种不好的做法.但为什么?我们是否获得了性能?他们是否害怕有人以"错误的方式"做到这一点,并添加了可枚举的类型Object,几乎破坏了任何对象上的所有循环?

TJ Holowaychukshould.js为例.他增加了一个简单的getterObject,一切工作正常(来源).

Object.defineProperty(Object.prototype, 'should', {
  set: function(){},
  get: function(){
    return new Assertion(Object(this).valueOf());
  },
  configurable: true
});
Run Code Online (Sandbox Code Playgroud)

这真的很有道理.例如,可以扩展Array.

Array.defineProperty(Array.prototype, "remove", {
  set: function(){},
  get: function(){
    return removeArrayElement.bind(this);
  }
});
var arr = [0, 1, 2, 3, 4];
arr.remove(3);
Run Code Online (Sandbox Code Playgroud)

是否有任何反对扩展本机类型的论据?

javascript prototype prototypal-inheritance

121
推荐指数
7
解决办法
3万
查看次数

Java:拆分后获取最后一个元素

我正在使用String split方法,我想拥有最后一个元素.Array的大小可以改变.

例:

String one = "Düsseldorf - Zentrum - Günnewig Uebachs"
String two = "Düsseldorf - Madison"
Run Code Online (Sandbox Code Playgroud)

我想拆分上面的字符串并得到最后一项:

lastone = one.split("-")[here the last item] // <- how?
lasttwo = two.split("-")[here the last item] // <- how?
Run Code Online (Sandbox Code Playgroud)

我不知道运行时数组的大小:(

java string split

119
推荐指数
8
解决办法
20万
查看次数

当我在循环中使用arr.lenght(misspelt)而不是arr.length时,为什么JavaScript不警告我?我也使用严格模式

我花了几个小时,只是找出我拼错字.length作为.lenght.它可以正常运行,完全没有警告.为什么...?

'use strict'在Node.js 10.13.0上使用并运行.

码:

'use strict';
let arr = [1, 2, 3, 4];
for(let i = 0; i < arr.lenght; i++) {
  console.log(arr[i]);
}
Run Code Online (Sandbox Code Playgroud)

javascript

64
推荐指数
5
解决办法
6383
查看次数

JavaScript的array.clear()不是函数吗?

当按下"清除"按钮时,我正在尝试清空包含绘制坐标的数组.

当我打电话时drawnDivs.clear(),我得到一个错误,它不是一个功能.drawnDivs肯定是一个阵列,我有Firebug console.log打印出来的东西.它在这里托管.

javascript arrays clear

58
推荐指数
2
解决办法
8万
查看次数

在JavaScript中设置数组长度是反模式吗?

使用如下代码是不好的:

var a = [1,2,3,4];
a.length = 2; // 3 and 4 are removed
Run Code Online (Sandbox Code Playgroud)

它有不错的浏览器支持吗?删除的值是否正确收集垃圾?

javascript

40
推荐指数
4
解决办法
5961
查看次数

如何从Array中删除元素?

可能重复:
如何在JavaScript中清空数组

如何从jQuery数组中删除所有项目?

我有数组 var myArray = [];,我想在每个帖子上清除这个数组中的所有项目.

javascript arrays

24
推荐指数
2
解决办法
4万
查看次数

全局中止所有jQuery AJAX请求

有没有办法在没有请求对象句柄的情况下全局中止所有Ajax请求?

我问的原因是我们有一个非常复杂的应用程序,我们使用setTimeOut()在后台运行许多不同的Ajax请求.如果用户单击某个按钮,我们需要暂停所有正在进行的请求.

javascript jquery

19
推荐指数
3
解决办法
2万
查看次数

Javascript perf来清理数组

我刚看了一眼:

http://jsperf.com/array-destroy/32

我不明白第一个怎么样:

arr.length = 0;
Run Code Online (Sandbox Code Playgroud)

可以慢于:

while (arr.length > 0) {
  arr.shift();
}
Run Code Online (Sandbox Code Playgroud)

有人可以联系/解释原因吗?

javascript arrays performance

12
推荐指数
1
解决办法
304
查看次数