Elixir中==和===有什么区别?

时间:2018-07-27 09:59:40

标签: elixir

我从Elixir开始。我了解到Elixir具有弱等式==和严格等式===运算符。

从JavaScript背景来看,==感觉像是一个大错误。 Elixir有什么不同吗?缺少什么吗?我应该何时在Elixir中分别使用弱运算符和强运算符?

到目前为止,我知道,在JavaScript "1" == 1中产生true,而在Elixir中则产生false。这意味着至少保留类型信息。如果是这样,那么弱平等的用途是什么?

1 个答案:

答案 0 :(得分:6)

根据official documentation

  

=====之间的区别在于,iex> 1 == 1.0 true iex> 1 === 1.0 false 在比较整数和浮点数时更为严格:

→ iex
Erlang/OTP 21 [erts-10.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Interactive Elixir (1.6.6) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> "bro" == "bro"
true
iex(2)> "bro" ===  "bro"
true
iex(3)> 1 == 1
true
iex(4)> 1.0 == 1.0
true
iex(5)> 1 == 1.0
true
iex(6)> 1 === 1.0
false

否则,它们几乎是相同的:

    $(function() {
    var params = {
        // Request parameters
    };

    $.ajax({
        url: "https://demo-api.com/",
        beforeSend: function(xhrObj){
            // Request headers
            xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{API KEY}");
        },
        type: "GET",
        // Request body
        data: "{body}",
    })
    .done(function(data) {
        alert("success");
    })
    .fail(function() {
        alert("error");
    });
});