“如果”功能(js)。初学者需要的语法建议

时间:2017-09-05 11:29:38

标签: javascript

这是我正在创作的googlescript的一部分。如果我必须检查具有2个给定值(1或0)中的任何一个的变量,那么请查看if条件是否正确?

if (emailSent != EMAIL_SENT && emailAddress != '' && daysleft == 1 && daysleft == 0) { //

阻止再次向同一个人发送同一邮件,同时跳过空白单元格

  

//如果daysleft = 1或0则发送邮件。

3 个答案:

答案 0 :(得分:1)

您可以对||的逻辑OR daysleft条件进行分组,因为逻辑AND &&的运算符优先级更高。 daysleft可以有零或一个值。

对于emailAddress,您可以使用该值,如果它是一个空字符串,则它是一个虚假值,否则是一个真值,它会重新调整为true

if (emailSent != EMAIL_SENT && emailAddress && (daysleft == 1 || daysleft == 0)) { 

答案 1 :(得分:0)

你有2个条件,daysleft == 1&& daysleft == 0也是矛盾的:

  • daysLeft不是1或0 - False&&错误=>假
  • daysLeft is 1 - True&&错误=>假
  • daysLeft为0 - False&& True =>假

所以输出总是假的

答案 2 :(得分:0)

在您撰写的条件中使用collection.forEach((item) => { promiseReturningFunction(item); }); 需要 string uri5 = "https://api.microsofttranslator.com/v2/Http.svc/BreakSentences?text=" + English.Text + "&language=en"; HttpWebRequest httpWebRequest1 = (HttpWebRequest)WebRequest.Create(uri5); httpWebRequest1.Headers.Add("Authorization", authToken); using (WebResponse response1 = httpWebRequest1.GetResponse()) using (Stream stream1 = response1.GetResponseStream()) { System.Runtime.Serialization.DataContractSerializer dcs = new System.Runtime.Serialization.DataContractSerializer(typeof(List<int>)); List<int> result = (List<int>)dcs.ReadObject(stream1); Console.WriteLine(text); Console.WriteLine("BreakSentences broke up the above sentence into " + result.Count + " sentences."); int curPos = 0; for (int i = 0; i < result.Count; i++) { arr[i] = text.Substring(curPos, result[i] - 1); string uri = "https://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + HttpUtility.UrlEncode(arr[i]) + "&from=" + "en" + "&to=" + "ja" + "&category=" + category; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri); httpWebRequest.Headers.Add("Authorization", authToken); using (WebResponse response = httpWebRequest.GetResponse()) using (Stream stream = response.GetResponseStream()) { DataContractSerializer dcs1 = new DataContractSerializer(Type.GetType("System.String")); string translation = (string)dcs1.ReadObject(stream); Console.WriteLine(translation); output = translation; } arr2[i] = output; curPos += result[i]; } } &&daysleft相等,这是不可能的。

1

要解决此问题,您必须在它们之间添加0

至于语法,我会像这样写这个特例:

if ( ... && daysleft == 1 && daysleft == 0) {

对于OR的其他情况,我会将变量中的条件分开,并将其与if (emailSent != EMAIL_SENT && emailAddress && daysleft < 2) 内部一起使用,如下所示:

ORing

如果你想内联案例,你必须这样写:

and

括号将对它们进行分组,因此const lessThanTwoDaysLeft = daysleft === 1 || daysleft === 0; if (emailSent != EMAIL_SENT && emailAddress && lessThanTwoDaysLeft) 的结果将用于整体条件。

最后,我建议你使用三等于,而不是两等。