首页 > 试题广场 >

var x=10; function cals(myNum)

[单选题]

var x=10;

function cals(myNum) {
    return x+myNum;
}

函数 cals(7) 的返回是什么?
  • NaN
  • 17
  • 107
  • 10
  • 7
myNum本身就没有写明类型,传进去的是数字,return两个数字相加就是这两个数字之和呀,如果传进去的是"7"(注意引号这里是字符串),输出的结果那就是107了,+号两边都是数字就直接返回数字之和,如果有一个字符串就拼成字符串。
发表于 2018-04-11 10:31:08 回复(0)
var x=10; 
function cals(myNum) {  
    console.log(typeof x); // number
    console.log(typeof myNum); // number  
    return x+myNum; 
} 
console.log(cals(7)); // 17
发表于 2018-02-11 11:07:42 回复(0)
题中明显定义得变量为window(全局)变量,当然,函数中可以直接使用;js定义的变量为弱变量,“+”运算时使用number()函数进行转换后,通过isNaN()判断其是否为一个数值,后进行相关的运算。如果字符型与数字型进行“+”运算,在此处“+”实质为一个字符连接符,非运算符 。
发表于 2018-01-23 23:55:29 回复(1)

小刘啊,我要用x + mynum 小刘:好的,请稍等!小刘找啊找,发现函数内部根本没有x这个变量,于是小刘就到外面去找,就找到了一个var x=10 ,相当于在函数内部声明了一个变量var x ,clas(mynum)mynum为行参, clas(7)为实参 实参为7 ,那么开始执行吧! x + mynum (10 + 7) 数字类型相加 得出17


发表于 2019-06-24 21:40:04 回复(0)
都是number值。当然是17了
发表于 2017-04-01 13:08:46 回复(0)
考察js基本概念》操作符》一元操作符的理解
把undefined null boolean都转为number  操作后   两边都为number的进行相加操作
        undefined=0
        null=0
        boolean的true=1 false=0
把string object转为string                            操作后     只要有一边为string的进行拼接操作 
        string的 中文=中文   数字(有双引号的就是字符串而不是number)  几进制=转化为十进制    
        (此题7 10都没有双引号 则是num 进行相加操作
        object的 先转为字符串tostring 

发表于 2018-06-05 00:31:55 回复(0)
这个题目是没有人做吗?怎么只有这点人解析。

在js里面定义的变量,不应该都是String类型的吗,String类型的+是拼接符。在此题中为什么会变成了运算符了,这点弄不清楚。哪位解释一下
发表于 2017-11-22 14:49:49 回复(14)
难道不是将7转换为String,结果为107?
发表于 2017-03-11 08:39:04 回复(3)
题出错了吧 不应该是calc吗
发表于 2017-02-08 10:06:55 回复(2)
x在作用域链中查找,函数局部作用域没找到,去上一级作用域查找(这里为全局作用域)
x为10
传入的形参是数字7
10+7 = 17
发表于 2020-04-04 12:43:06 回复(0)
哪位大神可以帮我解答一下在JS中全局变量和局部变量是怎么区分的???
发表于 2018-10-24 15:40:55 回复(2)

此题考查闭包,闭包是函数和函数作用域链的组合,广义来看,任何函数都是闭包。

此题 cals 函数中引用了变量 x,而它的作用域中并不存在 x 的定义,则会沿着作用于链往上找,在全局作用域中找到了 x。作用域链作为 cals 执行上下文的一部分,由静态词法作用域链 [[scope]] (在此仅包含全局作用域)和当前执行上下文的活动对象(AO)一同组成。

发表于 2018-08-27 21:33:01 回复(0)
函数内部可以访问函数外部的变量
发表于 2017-04-09 22:35:26 回复(0)
ccw头像 ccw
这个和变量提升有什么区别?
发表于 2017-09-16 08:08:07 回复(0)
cals(7)能得出17?确定不是NaN
发表于 2017-01-06 10:05:03 回复(10)
var a;
function b(c){
    return a + c;
}

a = 10;
// 其实在调用函数时,全局变量a已经被赋值了,那么函数里面的a就是10
console.log(b(7));

编辑于 2023-12-22 15:38:31 回复(0)
想复杂了,,,
发表于 2022-11-08 23:25:57 回复(0)
为什么每人从变量提升和函数提升角度去想
发表于 2022-05-11 15:09:34 回复(2)
这涉及到作用域链 变量使用没有在本作用域声明的话,就会一层一层往上找,直至全局作用域部分
发表于 2022-03-28 11:51:15 回复(0)
***
发表于 2022-03-03 00:02:26 回复(0)