console.log在评估之前/之后的表达式

时间:2018-06-15 17:19:52

标签: javascript console

鉴于诸如let boolVal = 1 < 2之类的陈述,是否有办法控制记录实际表达式,即1 < 2 true结果?

&#13;
&#13;
let boolVal = 1 < 2;
console.log(boolVal)            // logs out the boolean result
console.log(boolVal.toString()) // logs out the boolean result as a string

/* is there a way to get just
'1 < 2'
itself to be logged out? */
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:1)

您可以通过制作自定义功能来实现此目的:

&#13;
&#13;
function printExpression(x,y){
  console.log( (x<y?x:y) + " < " + (x<y?y:x));
}
printExpression(1,2);
printExpression(4,3);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以创建一个进行比较的函数,并记录该函数的结果和函数本身。

function boolValComparer(val1, val2) {
  console.log(val1, '<', val2); // logs the boolean comparison as string with parameters
  return val1 < val2;
}
let boolVal = boolValComparer(1, 2);
console.log(boolVal)            // logs out the boolean result
console.log(boolValComparer)    // logs out the comparer function as a string

答案 2 :(得分:1)

let boolVal = 1 < 2;

您无法记录 1&lt; 2 直接因为它们被比较并存储在boolVal中。您可以做的是解决方法。

在变量var1和var2中存储 1 2

let boolVal = var1 < var2

if boolVal:
    console.log(var1 + "<" + var2)
else:
    console.log(var1 + ">" + var2)

答案 3 :(得分:1)

从评论部分的回复中,我发现您需要一个包含不同操作数的通用解决方案。 我能想到的最简单的解决方案是使用eval。

1-创建一个字符串数组array []。你可以创造一个字符串。 “”+表达。 2- console.log(array [index] + eval(array [index]))

虽然我不推荐。 Eval对性能和安全性都不利。 另一种解决方法是为结果和从第一步创建的字符串建立连接。像2个数组或创建具有2个属性的对象。 {value:,expression}。 打印变量时,可以打印它们。