Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript副作用_Javascript - Fatal编程技术网

Javascript副作用

Javascript副作用,javascript,Javascript,我是Javascript领域的新手,我正在尝试分析和清理一些现有代码。我对理解代码中的副作用感兴趣;在某些情况下,这对我来说是显而易见的,但在其他情况下,我不确定 例如,在下面导出的函数中,赋值newProperty是否被认为是一种副作用?在代码运行之前,newProperty将不存在,或者编译器是否理解并将此函数视为具有newProperty属性的对象 这是我感兴趣时,考虑如何网页将处理此代码时,它被导入到另一个文件 export function doSomething(a, b)

我是Javascript领域的新手,我正在尝试分析和清理一些现有代码。我对理解代码中的副作用感兴趣;在某些情况下,这对我来说是显而易见的,但在其他情况下,我不确定


例如,在下面导出的函数中,赋值newProperty是否被认为是一种副作用?在代码运行之前,newProperty将不存在,或者编译器是否理解并将此函数视为具有newProperty属性的对象

这是我感兴趣时,考虑如何网页将处理此代码时,它被导入到另一个文件

    export function doSomething(a, b) {
        let c = a + b
        return c
    }
    doSomething.newProperty = () => "someString"

导入文件时,将运行所有顶级语句。大多数情况下,这只是意味着函数/类被声明和导出,但在代码中,您也在设置函数的属性。这意味着,一旦导入文件,导出的函数将包含额外的属性,而不必首先运行它


虽然我认为“副作用”的概念有点误导。通常情况下,一个副作用是当函数改变了一些非预期返回值的外部状态时。

例如,只需添加类和删除类即可理解并将此函数视为对象函数是javascript中的对象。我建议您放弃这个问题,集中精力从知名来源学习javascript,同样,javascript语言也不是理解副作用的最佳语言。javascript中的几乎所有内容都可能导致副作用。即使是看起来很纯的函数也可以启动导弹:在代码运行之前,newProperty将不存在——是的,确实如此。