相关疑难解决方法(0)

解释封装的匿名函数语法

摘要

你能解释一下JavaScript中封装的匿名函数语法背后的原因吗?为什么这样做:(function(){})();但这不是:function(){}();


我知道的

在JavaScript中,可以创建一个这样的命名函数:

function twoPlusTwo(){
    alert(2 + 2);
}
twoPlusTwo();
Run Code Online (Sandbox Code Playgroud)

您还可以创建匿名函数并将其分配给变量:

var twoPlusTwo = function(){
    alert(2 + 2);
};
twoPlusTwo();
Run Code Online (Sandbox Code Playgroud)

您可以通过创建匿名函数来封装代码块,然后将其包装在括号中并立即执行:

(function(){
    alert(2 + 2);
})();
Run Code Online (Sandbox Code Playgroud)

这在创建模块化脚本时非常有用,可以避免使当前作用域或全局作用域混乱,并且可能存在冲突的变量 - 例如Greasemonkey脚本,jQuery插件等.

现在,我理解为什么会这样.括号包含内容并仅公开结果(我确定有更好的方法来描述),例如with (2 + 2) === 4.


我不明白

但我不明白为什么这也不起作用:

function(){
    alert(2 + 2);
}();
Run Code Online (Sandbox Code Playgroud)

你能解释一下吗?

javascript syntax anonymous-function

364
推荐指数
4
解决办法
7万
查看次数

如何使用javascript计算文件的md5哈希值

有没有办法在使用Javascript上传到服务器之前计算文件的MD5哈希值?

javascript md5

93
推荐指数
8
解决办法
12万
查看次数

如何生成校验和并在Javascript中转换为64位非常大的文件而不会溢出RAM?

问题:

  1. 如何正确生成校验和,这是独立的,一致的,独立于浏览器?另外,我想将SHA256/MD5校验和字符串转换为64位.

  2. 如何在没有大量RAM要求的情况下正确读取文件以生成校验和?即我们如何在不影响RAM的情况下处理1 GB文件

例如,是否可以在不将文件加载到内存的情况下读取文件?(见答案)

这个项目似乎很有希望,但也无法实现.


我的目的是在X MB的块中逐步/递增地生成校验和.这可能有助于避免一次使用太多RAM.
以下是代码,它没有按预期工作:

let SIZE_CHECKSUM = 10 * Math.pow(1024, 2); // 10 MB; But can be 1 MB too
async function GetChecksum (file: File):
Promise<string>
{
  let hashAlgorithm: CryptoJS.lib.IHasher<Object> = CryptoJS.algo.SHA256.create();
  let totalChunks: number = Math.ceil(file.size / SIZE_CHECKSUM);
  for (let chunkCount = 0, start = 0, end = 0; chunkCount < totalChunks; ++chunkCount)
  {
    end = Math.min(start + SIZE_CHECKSUM, file.size);
    let resultChunk: string = await (new Response(file.slice(start, end)).text());
    hashAlgorithm.update(resultChunk);
    start …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm checksum sha256 typescript

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

如何在 Node JS 中生成并验证给定字符串的校验和

我正在尝试在 Node Js 中重写以下函数,以生成校验和并验证支付交易,而且我对在 Node Js 中编写代码还很陌生。

我已经从服务提供者那里获得了代码,我需要将其转换为 Node Js。我使用 Express 作为我的后端。

    <?php

    function generateChecksum($transId,$sellingCurrencyAmount,$accountingCurrencyAmount,$status, $rkey,$key)
    {   
        $str = "$transId|$sellingCurrencyAmount|$accountingCurrencyAmount|$status|$rkey|$key";
        $generatedCheckSum = md5($str);
        return $generatedCheckSum;
    }

    function verifyChecksum($paymentTypeId, $transId, $userId, $userType, $transactionType, $invoiceIds, $debitNoteIds, $description, $sellingCurrencyAmount, $accountingCurrencyAmount, $key, $checksum)
    {
        $str = "$paymentTypeId|$transId|$userId|$userType|$transactionType|$invoiceIds|$debitNoteIds|$description|$sellingCurrencyAmount|$accountingCurrencyAmount|$key";
        $generatedCheckSum = md5($str);
//      echo $str."<BR>";
//      echo "Generated CheckSum: ".$generatedCheckSum."<BR>";
//      echo "Received Checksum: ".$checksum."<BR>";
        if($generatedCheckSum == $checksum)
            return true ;
        else
            return false ;
    }   
?>
Run Code Online (Sandbox Code Playgroud)

如何在 Javascript 中编写以下代码并传递参数。

javascript node.js express

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

使用javascript的文件的MD5哈希

我必须从前端上传文件并计算该文件的md5哈希值。我尝试使用crypto.js生成md5,但对于图像,它给了我错误的md5。我看到了一个名为onlinemd5.com的网站,而这正是我所需要的。

谁能帮助我如何使用JavaScript计算文件(文本文件,图像,视频等)的md5哈希值?是否可以从http://onlinemd5.com下载代码并实施该代码?

注意:我尝试了如何使用javascript计算文件的md5哈希中的一些建议,但没有用。


$scope.upld = function(element){
    $scope.files = element.files;
    var file = $scope.files[0];
    var reader = new FileReader();
    reader.onload = function(){
        $scope.md5_val = CryptoJS.MD5(reader.result);
        $scope.upload_file();
        $scope.$apply();
    };
    reader.readAsBinaryString(file);
};
Run Code Online (Sandbox Code Playgroud)

crypto.js没有正确计算图像md5。我没有尝试sparkmd5 js。

javascript md5 file-upload

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

纯 JavaScript 中的字母数字哈希函数

我正在寻找一种将给定字符串转换为字母数字哈希的方法。代码将在客户端执行,并且最多必须完全使用 vanilla JS 或 jQuery。

然而,是否还有一个非加密哈希,即只是一串不需要cryptoand的字母数字字符串Promises?我需要两者,即加密和非加密哈希。

第二个散列可以是普通的字母数字字符串,例如 10 个字符长。它应该是可恢复的,即应该始终为给定的字符串重新创建相同的哈希值。如果第二个哈希不是异步生成的(即使用Promises),那就更好了。boolean我打算将它用作in的键window.localStorage(对于许多不同的字符串)。

最终答案:

javascript algorithm hash

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