Javascript:如果变量符合在另一个变量上定义的条件
Javascript: If variable mets a condittion defined on another variable
我的问题很简单,但我找不到让thag在中工作的方法
其想法是,如果一个变量(数(满足另一个变量上定义的条件(秒(,则运行一些代码
示例:
var cond = '> 4';
var number = 5;
// Some type of if statement to check if 5 is > 4
您可以使用eval
,但通常如果使用eval
,则说明您无法正确理解问题。
var cond = '> 4';
var number = 5;
if (eval(number + cond)) {
console.log(number + cond);
}
另一种可能性是创建与条件相关的函数,然后将操作数存储在另一个变量中。
var compareFunctions = {
'>': function(a, b) {
return a > b;
}
};
var op = '>';
var operand = 4;
var number = 5;
if (compareFunctions[op](number, operand)) {
console.log(number + op + operand);
}
你是这样的意思吗?
if (eval(number+cond)){
console.log("success");
}
您可以使用一个函数来检查条件。
var cond = function (x) { return x > 4; };
var number = 5;
console.log(cond(number));
简单但可能危险且丑陋的方法是使用eval()
var cond = '> 5';
console.log(eval(4 + cond));
console.log(eval(6 + cond));
然而,这是危险的,因为如果该字符串以任何方式来自用户,他们可能会输入不好的东西,并导致不好的事情发生。
处理它的一个更合适的方法是正确地解析它:
let cond = '> 5';
const evaluateCondition = (value, condition) => {
// Allows for >, <, >=, <=, !=, ==
let [, operator, operand] = condition.match(/^'s*(>|<|>=|<=|!=|==)'s*('d+)$/);
switch(operator) {
case '>':
return value > operand;
case '<':
return value < operand;
case '==':
return value == operand;
// ... implement other operators here
}
};
console.log(evaluateCondition(4, cond));
console.log(evaluateCondition(6, cond));
这将允许您定义有效的运算符并以安全的方式处理它们,还可以轻松捕获无效输入。
以下是在编辑更改问题之前完成的。
您必须声明它外部的变量,但您可以很容易地设置它。我要使用的语法如下:
var a = 5, b;
a == 5 && (b = 2);
&&
之后的位仅在第一个条件为真的情况下执行。要用这样的语法设置变量,只需将其括在括号中即可。
更传统的方法是使用if
语句:
var a = 5, b;
if (a == 5) {
b = 2;
}
如果您在if
语句内部声明第二个变量,那么它不存在于它的外部:
var a = 5;
if (a == 5) {
var b = 2;
}
console.log(b) // undefined
这可能是绊倒你的原因。
您可以使用eval,只要小心并确保您首先阅读了eval:
var cond = '> 4';
var number = 5;
console.log(eval(("" + number + cond)));
相关文章:
- 得到"全局未定义“;全局变量定义清楚时出错
- 使用变量的名称,然后为该变量定义函数
- Javascript 从 php 变量定义 getElementById()
- 使用变量定义宽度和高度
- 函数内部的JavaScript全局变量定义
- Javascript变量定义-澄清
- 为多个变量定义相同的类型,在Webstorm中识别
- 如何用变量定义一个数组,然后用一个数字填充每个数组
- 画布的奇怪行为 上下文变量定义位置导致选项卡处于非活动状态时画布呈现冻结
- 为什么要显式将变量定义为未定义
- Gulp/Grunt 获取触笔工作表中的所有颜色变量,并将它们作为变量定义写入文件
- 是否可以在 Node.js 中为模块变量定义 SET 函数
- ES6 块范围的变量定义作为条件
- 使用 jQuery 获取由变量定义的文本输入的值
- :gt()选择器,为变量定义的索引
- 如何在ASP.NET中将Javascript变量定义为Session
- 带有用户输入的ajax请求变量定义有问题
- 使用ElasticSearch搜索变量定义字段
- 变量定义,不同的输出
- JavaScript变量定义和范围