Javascript 可以这样调用prompt()吗?

Javascript 可以这样调用prompt()吗?,javascript,Javascript,可以这样调用prompt吗: prompt('Enter your text here'); 而不是: prompt('Enter your text here', ''); 也就是说,不向其传递建议的输入?在中,第二个参数列为可选参数 值是包含文本输入字段中显示的默认值的字符串。它是一个可选参数 是的,这是有效的JavaScript。正如w3schools在它的可选部分中所提到的,它是可以的。 prompt方法的第二个参数是可选的(请参阅)。 根据ECMAScript规范(ECMA

可以这样调用prompt吗:

  prompt('Enter your text here');
而不是:

  prompt('Enter your text here', '');
也就是说,不向其传递建议的输入?

在中,第二个参数列为可选参数

是包含文本输入字段中显示的默认值的字符串。它是一个可选参数


是的,这是有效的JavaScript。正如w3schools在它的可选部分中所提到的,它是可以的。

prompt
方法的第二个参数是可选的(请参阅)。 根据ECMAScript规范(ECMA-262,第4.3.9节),未定义的
值被赋予一个没有赋值的变量。在
prompt
方法中,将第二个参数保留为
undefined
或将空字符串传递给它并不重要:这两个参数都会导致在提示中将空字符串作为默认值


如果您想知道为什么这些信息在DOM标准上不可用,那么答案是它是一种非标准方法,浏览器通常“只是”支持它(所谓的“DOM级别0”规范的一部分)。但是,即将发布的HTML5可能会将提示符(
window.prompt
)定义为标准方法(请参见)。

是的,第二个参数是可选的(目前最接近
prompt
alert
等规范):

提示符(message,默认)
方法在调用时必须释放存储互斥锁,向用户显示给定的消息,并要求用户使用字符串值响应或中止。然后,当方法等待用户响应时,用户代理必须暂停第二个参数是可选的。如果第二个参数(
default
)存在,则响应必须默认为默认值。如果用户中止,则该方法必须返回
null
;否则,该方法必须返回用户响应的字符串


(我的重点)

我以为答案是“是”,直到我在IE7中看到,这将导致在输入框中预先填充“undefined”。您可以在IE7中快速试用:


编辑:从评论来看,这似乎在IE8中也被打破了。

W3schools在某些部分有大量错误-对于JS内容,我建议使用MDN:当然这是正确的,但更好的是,使用规范如何?我不知道使用哪种规范<代码>提示符()
不在ECMAscript规范中,也不在HTML4.01规范中。如果我没有弄错的话,唯一的官方JavaScript文档来自Mozilla,因为他们是开发JavaScript的人。这算是一个规范吗?@TomvanderWoerdt:看看我的答案。这项工作正在标准化。Mozilla正式记录了JavaScript(他们专有的ECMAScript变体,就像JScript是微软的一样——但由于他们(作为Netscape)启动了它,所以更加庄重:-),而不是ECMAScript或浏览器标准。(相反,他们参与了ECMA的TC-39和HTML5工作组。)那么,当没有提供价值时会发生什么呢?是否将其设置为未定义?顺便说一句,资源太棒了。@OliverWeiler:不会设置占位符文本。请看我的回答,
提示符
现在出现在(草案)规范中:HTML5,它不仅仅是HTML:-)@T.J.克劳德:为了完整起见,我也在我的答案中添加了关于HTML5的备注。再次感谢您的宝贵发现!“…我鼓励您使用方法
窗口。prompt
而不是
prompt
prompt
窗口。prompt
,在我能找到的每个浏览器上:
prompt
只是指向函数的全局对象,所有全局对象都是全局对象(浏览器上的窗口对象)的属性。这一点很好。”。我会相应地更新我的答案。谢谢请注意,我刚刚添加了一个答案,因为在IE7中,似乎没有明确提供空字符串,因为第二个参数会导致字符串“undefined”被预先填充-(事实上,IE8也是如此。