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

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


        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);

2周前 评论
讨论数量: 2
  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);

2周前 评论

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

2周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!