我是编程和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
?
我的理解是,我们将这一行写为-undefined
为console.log(obj1.fn());
,因此javascript引擎如何将结果显示为console.log(console.log(this))
(在执行过程中未定义的内容)上下文)?
答案 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); }
希望这会有所帮助。