我試圖在比較中把一個運算子的字串表示轉換成運算子本身。
例如,類似于的東西
{obj1}。'==' {obj2}。
應該是:
{obj1} == {obj2}
OR
{obj1}。'!==' {obj2}
應該是:
{obj1}!
我可以使用eval(),但這將迫使被比較的物件轉換為字串,導致===(嚴格型別檢查)比較無用。
例如,在下面的例子中,eval將給出錯誤的結果:
const obj = "5"
const obj2 = 5
const operator = '=='。
eval(`console.log(${obj} ${operator} ${obj2})`) //輸出true,不正確(obj是字串型別,obj2是數字型別)。
console.log(obj == obj2) //outputs false, correct
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
我應該如何處理這個問題?
可能的方法我想到的一個方法是直接通過 if else 梯子,讓 js 處理比較,而不是決議比較運算子。
類似于
的方法if(condition === '!=='/span>){
return before_OrderRequest.Id !== after_OrderRequest.Id !
}else if (condition =='=='){
return before_OrderRequest.Id === after_OrderRequest.Id 。
}
//...更多的if陳述句。
uj5u.com熱心網友回復:
你可以用運算子的字串表示定義一個物件,作為回傳執行相應比較的箭頭函式的屬性。
。const compare = {
'=='。(a, b) => a == b。
'!='。(a, b) => a != b。
'===' : (a, b) => a ==b,
'!==' : (a, b) => a !==b
}
const obj1 = 1;
const obj2 = 2;
console.log(compare['=='](obj1, obj2)
console.log(compare['!='](obj1, obj2))
console.log(compare['=='](obj1, obj2)
console.log(compare['! =='](obj1, obj2))
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/306614.html
標籤:
