я это ниже фрагмента кода,разница между возвращаемой строкой из метода и строки переменной
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
public class Test {
public static void main(String[] args) throws Exception {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
Test ctrl = new Test();
String[] arr = {"1==1"};
String eer = "1==1";
engine.put("hi", ctrl);
System.out.println(engine.eval(arr[0])); //true
System.out.println(engine.eval(eer)); //true
System.out.println(engine.eval("hi.values()")); //prints 1==1
}
public String values() {
return "1==1";
}
}
Я могу понять последнее sout
заявления заключен в двойных кавычках, следовательно, он выводит значение, как это.
Как я могу сделать оператор для вычисления выражения как , как и другие строковые переменные?
EDIT
В Java, если я добавить,
String result = ctrl.values(); //returns 1==1
System.out.println(engine.eval(result));//true
Я попытался же на Javascript
var result = myfun();
function myfun(){
return "1!=1";
}
if(result){
window.alert("yes"); // This came even when condition is false
}
Попробуйте 'System.out.println (engine.eval (" eval (hi.values ()) "));' –
вы спрашиваете о javascript 'eval'? https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/eval –
Для вашего теста javascript вы возвращаете строку «1! = 1», поэтому всегда будете оценивать значение true, так как это а не булев, это строка. 1! = 1 без кавычек будет оцениваться как false. – cloudwalker