首页 > 试题广场 >

compute(10,100); var com

[单选题]

compute(10,100);
var compute = function(A,B) {
  console.info(A * B) ;
};
 function compute(A,B){
   console.info(A + B);
 }
 function compute(A,B){
   console.info((A + B)*2);
 }
 compute(2,10);

请选择输出结果:
  • 110 12
  • 220 20
  • 220 24
  • 220 12
JS在创建变量是先都声明好,然后再去赋值。并不是声明一个变量就赋值,再声明一个再赋值。
比如:
var a=1; var b=2;
JS解析是
var a;
var b;
a=1;
b=2;

再者js所谓变量提升,提升就是为了事先声明变量。在作用域中,不管变量和函数写在什么位置,所有变量会被整体提升到作用域顶部,所有函数也会被整体提升到作用域顶部,但是函数整体在变量整体的后面。所以这题的解析如下
//声名变量
var compute;
function compute(A, B) {
console.info(A + B);
}

function compute(A, B) {
console.info((A + B) * 2);
}
compute(10, 100);
//赋值
compute= function(A, B) {
console.info(A * B);
};
compute(2, 10);



编辑于 2019-02-23 15:15:03 回复(0)
//相当于如下代码
var computed;
function compute(A, B) {
  console.info(A + B);
}
function compute(A, B) {
  console.info((A + B) * 2);
}
compute(10, 100); //220
compute = function (A, B) {
  console.info(A * B);
};
compute(2, 10); // 20
发表于 2020-06-26 14:45:59 回复(0)
菜鸟教程里写的例子不错,可以看看:http://www.runoob.com/js/js-hoisting.html
发表于 2019-03-12 21:47:20 回复(0)
这样就好理解了
var compute; // 变量声明提升到顶部
 function compute(A,B){ // 函数声明提升到顶部
   console.info(A + B);
 }
 function compute(A,B){ // 函数声明提升到顶部
   console.info((A + B)*2);
 }
compute = function(A,B) { // 函数表达式赋值
  console.info(A * B) ;
};

compute(10,100);
 compute(2,10);
发表于 2019-03-11 13:53:59 回复(2)
20怎么来的
发表于 2019-03-01 20:13:03 回复(1)
存在函数提升
发表于 2019-02-24 23:55:04 回复(0)