对一道笔试题存在疑问?在这里求助大家,有兴趣可以参与讨论

求助大家,这道题该如何做,涉及到哪些知识?知道的朋友解释一下,谢谢。


        var x = 1, y = z = 0;
        function add(n) {
            n = n + 1;
        }
        y = add(x);
        function add(n){
            n = n + 3;
        }
        z = add(x);

        console.log(x, y, z);

为什么x最终还是1?而y,z是undefined?

最佳答案
  1. JS基本数据类型在函数中是值传递,所以x的值没变
  2. add函数中并没有返回值,所以 重新赋值的y, z 是undefined

刚试了试你的代码,发现提示函数重复定义:

error: unknown: Identifier 'add' has already been declared (6:9) 4 | } 5 | y = add(x); > 6 | function add(n){ | ^ 7 | n = n + 3; 8 | } 9 | z = add(x);

4年前 评论
讨论数量: 7
  1. JS基本数据类型在函数中是值传递,所以x的值没变
  2. add函数中并没有返回值,所以 重新赋值的y, z 是undefined

刚试了试你的代码,发现提示函数重复定义:

error: unknown: Identifier 'add' has already been declared (6:9) 4 | } 5 | y = add(x); > 6 | function add(n){ | ^ 7 | n = n + 3; 8 | } 9 | z = add(x);

4年前 评论

add没有返回值

4年前 评论

函数是有默认的返回值得,你可以在浏览器的控制台打印下,只不过函数默认返回值是undefined

4年前 评论

函数不设置返回值的话默认是undefined,x没变过是显而易见的

4年前 评论

function add(n){
n = n+ 1;
return n
}
这样就不会有undefined了,函数的如果没有return 返回的话,默认返回undefined

4年前 评论

@诺大的院子 谢谢解答,严格模式下是会报错的,不过我报错跟你不一样,我是提示 Uncaught ReferenceError: z is not defined

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!