功能IF但用法语

时间:2016-12-30 09:48:34

标签: javascript html

我想编写一个名为SI的函数,它的工作原理如下(SI是if的法语单词),但是使用这种语法:

SI(condition)
ALORS{
function hello()
}
SINON{
function bye();
function goodbye();
}

在Javascript中它将是:

if(condition){
    function hello();
}
else{
function bye();
function goodbye();
}

这可能吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

试试这个,

function si(condition) {
    return {
        alors: function(callback) {
            if (condition) callback();
            return this;
        },
        sinon: function(callback) {
            if (!condition) callback();
            return this;
        }
    };
}

var x = 0;

si(x == 1)
  .alors(() => console.log("Bonjour!"))
  .sinon(() => console.log("Au revoir!"));

这是如何运作的?

  • si是一个返回对象的函数
  • 该对象有两个功能,alorssinon
  • alors是一个函数,它将另一个函数callback作为参数,如果condition(已传递给si)为真,则alors将执行回调函数
  • () => console.log(...)function() { return console.log(...); }的简写符号,用于创建匿名函数。

答案 1 :(得分:1)

简短回答:不,你不能覆盖js的基础知识。但你可以模仿某种行为:

function si(condition,alors,sinon){
  if(condition){
   alors();
  }else{
   sinon();
 }
 }

像这样使用:

si(a==true,
 //alors
 function(){
  alert("a");
 },
 //sinon
 function(){
 alert("no a");
 });

或者:

function evaluate(obj){
 if(obj.si){
   obj.alors();
 }else{
   obj.sinon();
 };

像这样使用:

evaluate({
si:a==true,
alors:function(){},
sinon:function(){}
});

您还可以将字符串编译为本机js,这将完全符合您的语法:

function frenchjs(string){
var translate={
si:"if",
sinone:"else"
};
for(key in translate){
string=string.replace(key,translate[key]);
}
eval(string);
}

像这样使用:

frenchjs("si(a==true){alert('a')}sinnon{alert('no a');}");