JavaScript错误处理:我可以在三元运算符中抛出一个错误? [英] JavaScript error handling: can I throw an error inside a ternary operator?

查看:127
本文介绍了JavaScript错误处理:我可以在三元运算符中抛出一个错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是否允许在三元运算符内发生错误?这是有效的:

  function foo(params){

var msg =(params.msg) ? params.msg:(throwerror);

//如果`params`内的所有内容定义为
}

我想要做的是确保所有需要的参数,它们位于 param 对象中,并且会发生错误(如果有的话)没有定义



如果这只是愚蠢的,有没有更好的方法来做到这一点?

解决方案

您可以这样做:

  function foo(params){

var msg =(params.msg)? params.msg:(function(){throwerror}());

//如果`params`内的所有内容定义为
}

我不会真的推荐它,它使得无法读取的代码。



这也可以工作(不是真的好多了):

  function foo(params){

var msg = params.msg || (function(){throwerror}());

//如果`params`内的所有内容定义为
}






或者为了更清洁的方法,做一个命名的功能。

 函数_throw(m){throw m; } 





  function foo params){

var msg = params.msg || _throw( 错误);

//如果params中的所有内容都被定义为
}


Am I allowed to throw an error inside a ternary operator? Is this valid:

function foo(params) {

    var msg = (params.msg) ? params.msg : (throw "error");

    // do stuff if everything inside `params` is defined
}

What I'm trying to do is make sure all of the parameters needed, which are in a param object, are defined and throw an error if any one is not defined.

If this is just foolish, is there a better approach to doing this?

解决方案

You could do this:

function foo(params) {

    var msg = (params.msg) ? params.msg : (function(){throw "error"}());

    // do stuff if everything inside `params` is defined
}

I wouldn't really recommend it though, it makes for unreadable code.

This would also work (not that it's really much better):

function foo(params) {

    var msg = params.msg || (function(){throw "error"}());

    // do stuff if everything inside `params` is defined
}


Or for a cleaner approach, make a named function.

function _throw(m) { throw m; }

function foo(params) {

    var msg = params.msg || _throw("error");

    // do stuff if everything inside `params` is defined
}

这篇关于JavaScript错误处理:我可以在三元运算符中抛出一个错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆