相关疑难解决方法(0)

Javascript函数声明类型之间的差异

在阅读关于IronJS的文章时,我可以在这篇文章中找到http://ironjs.wordpress.com/

其中包括:

*上下文敏感函数关键字

如果您不知道,这两个函数不相同:

(function bar() { })  

function foo() { } 
Run Code Online (Sandbox Code Playgroud)

找出差异,我将作为练习留给读者.

有人可以解释这里的区别吗?

javascript

10
推荐指数
2
解决办法
2414
查看次数

功能上的额外括号

可能重复:
围绕JavaScript对象/函数/类声明的括号是什么意思?
这个"(function(){});",括号内的函数在javascript中是什么意思?
一个Javascript函数

我遇到类似这样的标记:

var something = (function(){
    //do stuff
    return stuff;
})()
document.ondblclick = function(e) { alert(something(e)) };
Run Code Online (Sandbox Code Playgroud)

我不明白的开()()something变量.你能解释一下写这样的差异吗?

var something = function(){
    //do stuff
    return stuff;
};
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript closures

10
推荐指数
2
解决办法
1585
查看次数

window.onbeforeunload在页面刷新而不是页面关闭时执行

window.onbeforeunload当发生关闭事件时,我正在使用弹出确认对话框,但页面刷新时会出现确认对话框,并且不会在页面关闭时执行.

这是JavaScript代码:

<script language="JavaScript">
    window.onbeforeunload = confirmWinClose();
    function confirmWinClose() {
        var confirmClose = confirm('Close?');
        return confirmClose;
    }    
</script>
Run Code Online (Sandbox Code Playgroud)

我在Chrome,Firefox和Internet Explorer上尝试过它.

javascript onbeforeunload

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

Javascript函数声明.冒号在函数声明中

javascript中的函数声明"function test()"和"test:function()"有什么区别?

function test() {
    …
}
Run Code Online (Sandbox Code Playgroud)

VS

test: function() {
    …
}
Run Code Online (Sandbox Code Playgroud)


var functionName = function(){} vs function functionName(){}问题函数被声明为:

function test() {
    …
}
Run Code Online (Sandbox Code Playgroud)

var test = function() {
    …
};
Run Code Online (Sandbox Code Playgroud)

从语法角度来看,我的问题中的函数看起来并不相同.

javascript

10
推荐指数
2
解决办法
4029
查看次数

为什么将一个函数分配给var与简单定义它不同?

所以我只是要在我们每个不断增长的全局列表(叹息)中添加一个新函数,并注意到最后一个用户使用了一个简单的变量赋值function a(){}.

function aFunction(){
    return null;
}

var bFunction = function(){
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个测试,看看它是否有所作为; 它确实如此,但却是一个相互冲突的.(chrome支持简单的功能,而firefox的变量赋值).

Firefox:功能创建(90 +%慢)/创建变量赋值(最快)

Chrome:功能创建(最快)/使用变量赋值创建(70 +%慢)

我明白这是微不足道的,但有任何理由存在差异,是否有更好的方法来做到这一点?

javascript

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

在Javascript中,何时需要为变量分配命名函数?

在Babel JS的在线REPL(http://babeljs.io/repl/)中,当我输入时:

let a = (x) => x+1
Run Code Online (Sandbox Code Playgroud)

它将被转化为:

"use strict";

var a = function a(x) {
  return x + 1;
};
Run Code Online (Sandbox Code Playgroud)

var a = function a(x)看起来有点令我困惑,因为我理解其中任何一个var a = function(x)function a(x)足够.

有没有人有关于何时以及为什么需要将命名函数分配给变量的想法?

javascript ecmascript-6

9
推荐指数
2
解决办法
939
查看次数

从ES6模块导入函数表达式或函数声明有什么区别?

据我所知(参见16.3.2.1节),ES6允许函数/类导出操作数的不同语法.差异是指导出的函数是否需要在导入时解释为函数声明,在这种情况下,您可以编写:export default function () {} // (a)或作为函数表达式:export default (function () {}); // (b).

作为一个可能的相关旁注:我读到进口是悬挂的,但我不确定这意味着什么.

以这个例子为例:

import foo from 'my_module'; // (c)

据我了解,上面的语句将我的导出函数保存在foo变量中.这个变量是悬挂的,或是什么,何时?

最重要的是,foomy_module使用函数(a)和使用函数导出时,有什么区别(在设置方面)(b)

javascript ecmascript-6 es6-modules

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

React 函数组件中的箭头函数和常规函数有什么区别(不再使用类组件)?

从 React Hooks 开始,我决定放弃 React 类组件。我现在只处理钩子和功能组件。

简单的问题:

我理解在类体内使用箭头函数而不是常规函数之间的区别。箭头函数会自动绑定(词法 this)到我的类的实例,我不必在构造函数中绑定它。这很好。

但由于我不再处理类,我想知道在功能组件内部执行以下操作有什么区别:

function App() {

  // REGULAR FUNCTION
  function handleClick1() {
    console.log('handleClick1 executed...');
  }

  // ARROW FUNCTION
  const handleClick2 = () => {
    console.log('handleClick2 executed...');
  }

  return(
    <React.Fragment>
      <div className={'div1'} onClick={handleClick1}>
        Div 1 - Click me
      </div>
      <div className={'div2'} onClick={handleClick2}>
        Div 2 - Click me
      </div>
    </React.Fragment>
  );
}
Run Code Online (Sandbox Code Playgroud)

两者都工作正常。

性能上区别吗?我应该赞成一种方式而不是另一种方式吗?它们都在每次渲染时重新创建,对吗?


关于可能重复的注意事项

我真的不认为这是一个重复的问题。我知道关于箭头和正则之间的区别有很多问题,但我想从 React 功能组件的角度了解 React 是如何处理它的。我环顾四周,没有找到。


用于测试的代码片段

function App() {

  // REGULAR …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

9
推荐指数
2
解决办法
1536
查看次数

我什么时候应该使用语法"(function(){...})();"?

我的查询用于"(function(){...})();" 鉴于我不是插件.例如" http://piecesofrakesh.blogspot.com/2009/03/downloading-javascript-files-in.html "

(function() {        
  var s = [
    "/javascripts/script1.js",
    "/javascripts/script2.js"
  ];

  var sc = "script", tp = "text/javascript", sa = "setAttribute", doc = document, ua = window.navigator.userAgent;

  for(var i=0, l=s.length; i<l; ++i) {
    if(ua.indexOf("MSIE")!==-1 || ua.indexOf("WebKit")!==-1) {
      doc.writeln("<" + sc + " type=\"" + tp + "\" src=\"" + s[i] + 
          "\" defer></" + sc + ">");
    } else {
      var t=doc.createElement(sc);
      t[sa]("src", s[i]);
      t[sa]("type", tp);
      doc.getElementsByTagName("head")[0].appendChild(t);
    }
  }
})();
Run Code Online (Sandbox Code Playgroud)

要么

var s = [
    "/javascripts/script1.js",
    "/javascripts/script2.js"
]; …
Run Code Online (Sandbox Code Playgroud)

javascript

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

使用箭头或不使用箭头在ES6中创建顶级功能有哪些优点/缺点?

以不同的方式在ES6/ES2015中创建顶级功能有哪些优点/缺点?或者这仅仅是品味/风格指南等问题?

选项1:

function square(n) {
   return n * n;
}
Run Code Online (Sandbox Code Playgroud)

选项2:

var square = function(n) {
  return n * n;
};
Run Code Online (Sandbox Code Playgroud)

选项3:

var square = (n) => {
   return n * n;
};
Run Code Online (Sandbox Code Playgroud)

选项4:

const square = (n) => {
   return n * n;
};
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

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