小编cFr*_*eed的帖子

选择如何更好地利用ES6 const并让它

免责声明:我知道下面的问题可能被视为"征求意见"(因此它不属于主题).
但事实并非如此:我正在寻找在考虑这一点时应该考虑的利弊事实.

我只是阅读(来自优秀的探索ES6)一个关注constvs letvsvar的摘录,其中结论表明(粗体是我的):

然后我们有两种方法:

  1. 首选const:const标记不可变绑定.
  2. 首选let:const标记不可变的.

我略微倾向于#1,但#2也很好.

让我感到困惑的是:这种偏好似乎是基于两种方法之间产生的差异的深层技术意义,好像作者感到基本上关注代码如何在低级别工作.

但是我也感到担心(也许是第一个!)可读性方面:从这个角度来看,#2似乎更好地使代码在处理数据发生的事情上更具语义意义.

但也许我错过了#1选择的一些优势......?


编辑,利用建议重复的链接:为什么大多数时候我应该使用const而不是让javascript?

事实上,对这个问题的公认答案实际上是以这样一种方式暴露事物,而不是强迫我遵循我以前的观点,即#2胜过#1.

顺便说一句,我意识到我的问题可能不是那么清楚,所以这里有一个更详细的重写:

  • 我是很清楚的(据我所知)所有的技术差异constlet,所以我的问题并没有询问有关的事情.
  • #1和#2之间的选择真正涉及的唯一一点在于使用任何不可变对象(尽管其内容可能会被更改!)vs 仅用于冻结对象.const

在那里,我很惊讶作者更喜欢#1,因为(从我的观点来看)这是相当误导的.
使用对象的最常见方式是它们的内容在此过程中发生变化,因此const如果使用#1,则在其声明级别读取:

  • 充其量我们不知道应该发生什么.
  • 在最坏的情况下,我们可以想象它的内容永远不会改变,而它可以!

另一方面,选择使用#2,我们可以相信 - 声明的const对象不会改变(实际上除了疏忽和/或错误).

所以回到我的问题:由于上面的反思似乎显然导致选择#2,我想知道我可能错过了哪一点,这使得作者更喜欢#1.

javascript ecmascript-6

9
推荐指数
1
解决办法
194
查看次数

jQuery()对象可以容纳非DOM对象吗?

分析这个SO问题所显示的代码,我刚刚注意到它使用jQuery迭代JSON数组的方式:

$(data).each(function() {
Run Code Online (Sandbox Code Playgroud)

而在我看来,数组应该以这种方式迭代:

$.each(data, function() {
Run Code Online (Sandbox Code Playgroud)

实际上,jQuery.each()手册页指出:

$ .each()函数与$(selector).each()不同,后者用于独占于jQuery对象进行迭代.

但是由于OP似乎让他的代码至少部分工作,我很想测试,并发现它有效!
这是证明:

var data = [
  {"key": "value-1"},
  {"key": "value-2"},
  {"key": "value-3"}
];

$(data).each(function() {
  document.write('<br />' + this.key);
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

所以,如果$(data).each()工作时data是一个JSON阵列,这似乎意味着该数组是一个可以接受的内容$(data)返回一个jQuery对象.

然后进行调查我检查了jQuery(elementArray)手册页并查看了jQuery( elementArray )一节,其中说明:

elementArray
类型:Array 包含要包装在jQuery对象中的一组DOM元素
的数组.

根据以上所述,对象数组(而不是DOM元素)应该失败.
所以我测试比较这个$(data)和简单的返回对象$('body').结果如下:

var data = [
  {"key": "value-1"},
  {"key": "value-2"},
  {"key": "value-3"}
];

function log(obj, init) {
  for (var prop …
Run Code Online (Sandbox Code Playgroud)

jquery

6
推荐指数
1
解决办法
154
查看次数

标签 统计

ecmascript-6 ×1

javascript ×1

jquery ×1