JavaScript 程序的输出结果

JavaScript 程序的输出结果

在这篇文章中,我们会看到不同Javascript程序的输出结果。

预测并解释下面Javascript程序的输出结果。

示例1

当记录(x, y, z)时,x的值为4(因为基本类型通过值传递,所以即使在函数f()之后它的值也不会改变)。y是一个数组,因此是一个对象,所以它通过引用传递,它的索引0被修改为X。因此,y记录X,B,C。在函数f()内部,c.first被改变为false,并且由于是通过引用传递,它记录了first: false。在函数g()中,创建了一个新对象,它的值为true,因此它记录了first: true。最后,在最后一行中,z.first仍然等于false,因此它记录了first: false。

function f(a, b, c) { 
    m = ["1", "2", "3"]; 
    a = 3; 
    b[0] = "X"; 
    c.first = false; 
} 
  
var x = 4; 
var y = ["A", "B", "C"]; 
var z = { first: true }; 
  
f(x, y, z); 
console.log(x, y, z); 
  
function g(a) { 
    a = { first: true }; 
    console.log(a); 
} 
  
g(z); 
console.log(z);

输出:

4 ["X", "B", "C"] {first:false} {first:true} {first:false}

示例2

在foo1()中,bar对象作为应该返回,并因此给出输出{bar:”hello”}。 但是在foo2()中,return后的换行符被解释为不同。 它隐式地在return后加上了一个分号,并且相应的一组行被视为一组语句。 因此foo2()有以下的return语句- return;,它给出了undefined的输出。

<script type="text/javascript" charset="utf-8"> 
    function foo1() { 
    return { 
       bar: "hello"
    } 
    } 
      
    function foo2() { 
    return
    { 
       bar: "hello"; 
    } 
    } 
      
    console.log(foo1()); 
    console.log(foo2()); 
</script>

输出:

{bar:"hello"} 
undefined

示例3

setTimeout()函数只有在父函数完全执行并返回之后才会被调用。所以即使console.log(3)设置了0毫秒的超时时间,它也只会在父函数返回后执行,即在打印1和4之后。然后打印3。最后,在1000毫秒的超时之后,打印2。

(function() { 
   console.log(1); 
   setTimeout(function(){console.log(2)}, 1000); 
   setTimeout(function(){console.log(3)}, 0); 
   console.log(4); 
})();

输出:

1
4
3
2

示例4

使用立即调用函数表达式(IIFE)的帮助,它将创建自己的作用域,我们可以将i传递给函数。变量i将成为局部变量,并且在每次循环中,i的值将被保留并在1秒后打印出来。

for (var i = 0; i < 5; i++) { 
   (function(x) { 
      setTimeout(function() { 
         console.log(x); 
      },  1000 ); 
   })(i); 
}

输出:

0
1
2
3
4

示例5

在check()函数内对变量x进行定义和初始化后进行输出。变量的声明可以被提升,但是初始化不能,所以返回undefined。在check()函数内,变量y被初始化为10。由于没有使用var关键字,该变量的作用域会一直持续到遇到同名变量或者全局对象。所以当调用check2()函数时,输出的结果是10。

var x= 5; 
function check(){ 
   y = 10; 
   console.log(x); 
   var x =10; 
} 
  
function check2(){ 
   console.log(y); 
} 
  
check(); 
check2();

输出:

undefined 
10

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程