相关疑难解决方法(0)

如何使用JavaScript从数组中删除对象?

我有一个像这样的JavaScript对象:

id="1";
name = "serdar";
Run Code Online (Sandbox Code Playgroud)

我有一个包含上面许多对象的数组.如何从该数组中删除对象,如下所示:

obj[1].remove();
Run Code Online (Sandbox Code Playgroud)

javascript arrays object

55
推荐指数
6
解决办法
14万
查看次数

为什么在Javascript5严格模式下不允许删除?

我对javascript很新,但我很喜欢它的危险快速和松散的表现力.也就是说,我注意到显然在"使用严格"模式下操作时,您无法删除对象.我不是一个删除东西的忠实粉丝(因为从理论上讲,范围应该照顾到这一点),但我想知道删除这个功能背后的动机是什么?

javascript ecmascript-5 strict-mode

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

删除非限定标识符时,严格模式语法错误背后的动机是什么?

我无法理解为什么在严格模式下,delete在非限定标识符上使用时会出现语法错误.

在大多数情况下,它是有道理的...如果你用通常的方式用var关键字声明变量,然后尝试使用delete它们,在非严格模式下它会无声地失败,所以严格模式失败是有意义的在这些情况下有错误.

不过,也有在那里你的情况下无法删除该标识符合格的:

(function() {

  // "use strict";

  var obj = Object.create({}, { bloop: { configurable: false } });

  delete obj.bloop; // throws TypeError in strict mode, silently fails in non-strict.

  console.log('bloop' in obj); // true

}());
Run Code Online (Sandbox Code Playgroud)

严格模式必须在此处执行运行时检查,因为遇到此类型时会引发TypeError.在某些情况下,您可以在非严格模式下成功删除非限定标识符...

// "use strict";

window.bar = 6;

console.log(typeof bar); // number

delete bar; // works in non-strict, syntax error in strict!

console.log(typeof bar); // undefined
Run Code Online (Sandbox Code Playgroud)

事实上,根据我的理解,您是否可以删除内容(在非严格模式下)取决于内部[[Configurable]]属性,并且与限定标识符无关.据我所知,在严格模式下无法删除非全局变量(作为本地VO的属性)是可配置的:

(function() …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×3

ecmascript-5 ×2

arrays ×1

object ×1

strict-mode ×1