了解console.log(console.log(object))

时间:2018-11-10 10:43:38

标签: javascript

我是编程和js的新手,我正在尝试学习javascript的精髓。

<?php 
    session_start();
    $connect = mysqli_connect('localhost','root','root','review');
    if(isset($_POST['submit']))
    {
        $id = $_POST['id'];
        $_SESSION['name']  = $id;
    }
?>

<!DOCTYPE html>
<html>
<head>
    <title>
        login
    </title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
    <form method="post">
        <input type="text" name="id" placeholder="id">
        <input type="password" name="password" placeholder="password">
    <input type="submit" name="submit" class="btn btn-success">
</form>
</body>
</html>

当我输出时,我得到对象(如预期)-var obj1 = { name: 'rawn', fn: function() { console.log(this); } }; console.log(obj1.fn()); ,在另一行我得到-{name: "rawn", fn: ƒ}。所以我的问题是为什么以及如何获得undefined

我的理解是,我们将这一行写为-undefinedconsole.log(obj1.fn());,因此javascript引擎如何将结果显示为console.log(console.log(this))(在执行过程中未定义的内容)上下文)?

2 个答案:

答案 0 :(得分:2)

console.log(obj1.fn())console.log(console.log(this))根本不相等,但是由于相同的原因,它们实际上具有相同的结果:内部函数 return什么都没有{em 。这些函数的返回值为undefined。外部console.log记录的内容是

答案 1 :(得分:1)

这是由于两个原因。首先,在console.log(this);函数内部this的上下文中,fn是对象本身。因此,它打印出obj1的胆量。

第二,在console.log(obj1.fn());中,您实际上正在调用不返回任何内容的方法。相反,如果您说console.log(obj1.fn);,它将返回:

  

ƒ(){                 console.log(this);               }

希望这会有所帮助。