【问题标题】:understanding javascript typeof理解 javascript typeof
【发布时间】:2016-11-11 22:43:01
【问题描述】:

这是一个非常基本的问题,因为我是 javascript 新手,但在我理解这个小东西之前我无法继续前进。

我有这个功能..

function stringOrNot() {
  var input = prompt('Input something here');

  if (typeof input != 'string') {
    alert("That is not a string!");

  } else {
    alert("That is a string!");
  }
}

stringOrNot();

问题
我需要输入什么来获得“这不是字符串”的警报?
哪种输入不是字符串?

无论我输入什么,我都会得到“这是一个字符串!”返回。

还有这个功能……

function stringOrNot() {
  var input = prompt('Input something here');

  if (typeof input != 'string') {
    alert("That is not a string!");
  } else (typeof input == 'string'){
    alert("That is a string!");
  }
}

stringOrNot();

这会返回一个控制台错误

“SyntaxError: Unexpected token '{'. 解析错误。”

为什么我不能像这样写 if 和 else 条件?

请有人解释一下这些小问题的答案,以便我继续前进!提前谢谢你并原谅我,我对编码很陌生。

::)

再次嗨..更新和另一个问题。

我最初提出问题的原因是 codeschool.com 的功能练习,结果如下......

函数计数E(){ var phrase = prompt("你想检查哪个短语?");

if (typeof(phrase) != "string"){
  alert("This is not a valid entry!");
  return false;
} else {

  var eCount = 0;
  for (var i = 0; i < phrase.length; i++){
      if (phrase.charAt(i) === 'e' || phrase.charAt(i) === 'E')
      eCount++;
      }
    }

      alert(eCount);
      return true;

}

countE()

所以.. 我想测试什么不是字符串,我想得到警报“这不是一个有效的条目!”。

但是,如果提示只返回一个字符串,那么为什么这个 > 包含在函数中?

【问题讨论】:

  • 它将始终返回一个字符串,因为这就是提示返回的内容。第二个问题是} else if (typeof input ==..

标签: javascript typeof


【解决方案1】:

我需要输入什么来获得“这不是字符串”的警报?哪一个 输入类型不是字符串?

prompt 的结果始终是string。因此,您无法向prompt 提供任何可能导致不同类型的输入。 prompt 总是返回一个字符串。

如需更正式的方法,请查看here

【讨论】:

  • 感谢 Christos,我现在会更频繁地参考 MDN。请问您能回答我的进一步问题吗?
【解决方案2】:

对于 stringOrNot(),您的 else 语句中有一个条件。如果您想有条件,请使用 else if () {}。

function stringOrNot() {

var input = prompt('Input something here');

if (typeof input != 'string') {
    alert("That is not a string!");

  } else if (typeof input == 'string'){
    alert("That is a string!");
  }
}

查看下方了解更多信息

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else

针对问题 2 编辑:

您包括对提示的检查,因为它也可以返回空值(当用户单击退出时)。所以当用户点击取消时,“这不是一个有效的条目!”会出现。

【讨论】:

  • 我发现了我的问题。我使用 Safari。在 Safari 中按 esc 或取消警报“0”。在 Chrome 中 - “这不是一个有效的条目!”在 esc 或取消时发出警报。你知道我怎样才能让 safari 正常工作吗?谢谢
  • 如果 eCount 为 0,您还可以添加检查以返回“This is not a valid entry”。
【解决方案3】:

我需要输入什么来获得“这不是字符串”的警报?哪种输入不是字符串?

不是字符串的东西包括数字、对象和布尔值。

prompt 函数的返回值将始终是一个字符串。 prompt 函数的目的是获取用户输入的字符串。

为什么我不能像这样写 if 和 else 条件?

if 接受条件。 else 是不满足条件时发生的情况。

您正在向else 提供条件,这没有意义。

不过,您可以使用另一个 if 语句:

} else if (something) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2014-08-13
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    相关资源
    最近更新 更多