相关疑难解决方法(0)

使用命名函数表达式有什么意义?

我正在浏览这篇关于函数声明和函数表达式之间差异的博客.

它给出了这两个例子.他们将第一个称为"匿名函数表达式",将第二个称为"命名函数表达式".

// anonymous function expression
var a = function(){
   return 3;
}

// named function expression
var b = function bar(){
   return 3;
}
Run Code Online (Sandbox Code Playgroud)

我在Chrome的JS控制台中测试了这两个,我看到以下内容:

a()
=> 3

b()
=> 3

bar()
=> bar is not defined
Run Code Online (Sandbox Code Playgroud)

我的问题是:在第二个函数表达式声明中,"bar"的重点是什么?一般来说,为什么要使用命名函数表达式?

javascript function-expression

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

4
推荐指数
1
解决办法
7878
查看次数

使用函数参数在JavaScript中访问对象

我想在JS中制作一种"购物清单".我在使用函数的参数访问对象时遇到问题.

shopList = {
  create: function createList(listName) {
    listName = {};
    listName["Banana"] = 2
  },

  output: function output(listName) {
    console.log(listName)
  },

};

shopList.create('list')
shopList.output('list')
Run Code Online (Sandbox Code Playgroud)

当我运行shopList.output时,返回'list'.如何通过参数访问对象?希望这不是重复,现在谷歌搜索几个小时,并没有取得任何进展.

javascript javascript-objects

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

未捕获(承诺)错误

这显然是一个SSCCE。我有以下内容(jsFiddle 在此处):

<html>
  <body>
    <input id='file-dlg' type='file'/>
    <br/>
    <button id='submit' type='button'>submit</button>
    <script>
     document.getElementById('file-dlg').addEventListener('change', storeAPromise);
     var p; 
     function storeAPromise() {
       p = new Promise(function executor(resolve, reject) {
         try {
           throw new Error('snafu');
         } catch(e) {
           reject(e);
         }
       });
     };
     document.getElementById('submit').onclick = function() {
       p.then(function() {}, function reject(e) {
         console.error('some problem happenned', e);
       });
     };
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当用户使用文件对话框选择文件时,我希望在控制台上根本不会打印任何内容,因为Error会捕获到该内容reject并调用promise的功能。相反,我希望只有在单击“提交”按钮时,错误才会出现在控制台上,并带有“发生了某些错误”的描述。

但是,这不是我观察到的。用户在对话框中选择一个文件后,就会在控制台上看到:

Uncaught (in promise) Error: snafu(…)
Run Code Online (Sandbox Code Playgroud)

当用户按下“提交”按钮时,我确实看到了预期的日志行“发生了某些问题”,但是当用户选择带有以下内容的文件时,我不明白为什么我还会看到较早的“未捕获(承诺)”日志行。文件对话框。考虑到我(无条件地)捕获了所有异常并简单地调用了reject函数,因此我也看不到为什么将错误描述为“未捕获” 。

javascript es6-promise

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