我对以下如何解释JavaScript感到困惑:
1
n = prompt("Please enter a number to calculate factorial " + "Now!", "Delete this first!" + " ...And this :(", "Hello");
我假设逗号“,”用于分隔发送给函数的参数,而prompt()接受一(1)或两(2)个参数并丢弃第三个:“Hello”?< / p>
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()
函数对待“,”(逗号)的方式与其他函数不同吗?
答案 0 :(得分:0)
我假设逗号“,”用于分隔发送给函数的参数,而prompt()接受一(1)或两(2)个参数并丢弃第三个:“Hello”?< / p>
prompt有两个参数。任何额外内容都会被忽略,因为JavaScript中的所有函数都不使用arguments object或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()函数以不同于其他函数的方式处理“,”(逗号)吗?
你认为这是错误的,但我不会试图阻止你。
答案 1 :(得分:0)
免责声明 我是通过 我的 对Javascript的理解及其工作原理撰写的。我从来没有正式教过Javascript,我没有在大学里学过这门语言,而且我从未看过这个。如果错误,请理解这是我的(工作)知识 Javascript的工作原理。
你的问题还有很多话题要谈。首要的是,这些功能中的每一个在它们需要或将接受的内容上是不同的。 Prompt()只接受两个参数:它输出的文本和&#34;默认文本&#34; (最初在提示中显示的文本)。你可以输入更多的参数,但函数没有被编码以对它们做任何事情,所以没有任何反应。
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.
我认为这就像操作顺序,首先优先考虑分组表达式然后从左到右。
希望这有帮助。