[英]Using the “+” (plus) and the “,” (comma) in javavascript prompt(), document.write() and console.log()
对于以下内容如何解释JavaScript,我有些困惑:
1。
n = prompt("Please enter a number to calculate factorial " + "Now!", "Delete this first!" + " ...And this :(", "Hello");
我假设用逗号“,”分隔发送给该函数的参数,并且hint()接受one(1)或two(2)参数并丢弃第三个参数:“ Hello”吗?
2。
How are "," commas interpreted in the document.write() function and the console.log() function.
他们习惯于分开论点吗? 这些函数可以接受无数个参数吗?
3。
在这些示例中:
console.log("1.) expression " , (1<2).toString() + 3>2);
console.log("2.) expression " , (3<2).toString() , 3>2);
console.log("3.) expression " + (3>2).toString() + 3>2);
console.log("4.) expression " , 3<2);
console.log("5.) expression " + 3<2);
console.log("6.) expression " + n + 3<2);
输出:
1.) expression false
2.) expression false true
3.) false
4.) expression false
5.) false
6.) false
我猜“ +”被视为表达式的一部分,并且在遇到另一个运算符时不将字符串连接起来?
在第一个表达式中,是否将(1<2).toString()
添加到3
? 它转换为哪种类型和什么值? 为什么将其评估为false
?
我是否可以假设document.write()
和console.log()
函数与其他函数对待“,”(逗号)不同?
我假设用逗号“,”分隔发送给该函数的参数,并且hint()接受one(1)或two(2)参数并丢弃第三个参数:“ Hello”吗?
提示有两个参数。 就像JavaScript中所有不使用arguments对象或rest参数来更改可变数量参数的行为的函数一样,忽略所有其他功能。
function x ( a ) { return a; }
x( 'this', 'is', 'perfectly' ,'valid' );
他们习惯于分开论点吗? 这些函数可以接受无数个参数吗?
是的,函数调用中的逗号始终用于分隔参数。 据我所知,这两个函数都使用可变数量的参数,但这可能是特定于实现的。
console.log("1.) expression " , ( (1<2).toString() + 3 ) > 2 );
console.log("2.) expression " , (3<2).toString() , 3>2);
console.log( ( "3.) expression " + (3>2).toString() + 3 ) > 2);
console.log("4.) expression " , 3<2);
console.log( ( "5.) expression " + 3 ) <2);
console.log( ( "6.) expression " + n + 3 ) <2);
我是否可以假设document.write()和console.log()函数与其他函数对待“,”(逗号)不同?
假设您这样做是错误的,但我不会尝试阻止您。
免责声明我从我的Javascript的理解,以及如何它的工作原理写这个。 我从来没有正式教过Javascript,也没有在大学里学习过这种语言,也从没有看过。 如果错了,请理解这是我对Javascript如何工作的(有效)知识 。
您的问题有很多要谈论的。 首先,最重要的是,这些功能在要求或接受方面有所不同。 Prompt()仅接受两个参数:输出的文本和“默认文本”(最初显示在提示中的文本)。 您可以添加更多参数,但是该函数未进行编码以对它们执行任何操作,因此没有任何反应。
console.log()函数与document.write()函数非常类似,它接受可变数量(理论上是无限个)的参数。 每个参数都会被求值并传递给那些函数。 Console.log
和document.write
都将简单地将这些表达式输出到它们各自的位置(Javascript控制台或文档对象)
这是要回答的棘手部分,也是完全根据我自己对Javascript的理解编写的。 Javascript中的+
运算符是双重功能。 它可以作为另外的两个数学运算和非整数concactenator。
我所说的那长串字是什么意思:当Javascript遇到其中带有+
的表达式时,它会尽最大的努力猜测它的期望值。 如果两个项目都是数字(整数,浮点数,双精度数,布尔值),则它决定您要将两个内容加在一起。 如果其中一个不是数字,则它决定您要同时合并这两个东西。 这并不总是正确的,有时甚至困扰着我们最好的人。
在幕后javascript的世界中,您的控制台测试看起来像这样。
console.log("1.) expression ", (1 < 2).toString() + 3 > 2);
//gets evaluated to :
//"1.) expression ", "true"+3 > 2)
//= "1.) expression", "true3" > 2) <- can't compare these two logically, so we get false
//= "1.) expression", false <- is finally passed to function
console.log("2.) expression ", (3 < 2).toString(), 3 > 2);
//"2.) expression ", "false" , true
console.log("3.) expression " + (3 > 2).toString() + 3 > 2);
//"3.) expression " + "false" + 3 > 2
//="3.) expression false" + 3 > 2
//="3.) expression false3" > 2 <- same thing, can't logically compare, so false.
console.log("4.) expression ", 3 < 2);
//"4.) expression ", false
console.log("5.) expression " + 3 < 2);
//"5.) expression 3" < 2 <- can't logically compare
//false
console.log("6.) expression " + n + 3 < 2);
//Same thing as #4, but not with an extra variable that gets combined to the string.
我认为这就像操作顺序,先对分组表达式进行优先排序,然后再从左到右进行排序。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.