变量声明提升

今天偶然加的一个群,有人问了个问题,心想大概也是拿来玩玩的。

var n = 9,
    s = 'str';
function fn () {
    return s;
    return n;
    n = 7;
    var n = 6;
}
var a = fn ();
alert(a); // 弹出的是什么

个人觉得这样忽悠不了人,然后改了下,问了句:

var n = 9;
function fn () {
    return n;
    n = 7;
    var n = 6;
}
var a = fn ();
alert(a); // 弹出的是什么

然后有人就掉坑里去了。
其实现在标题摆在这里,也大概知道答案了。
声明提升,提升的是声明,赋值操作肯定也就没有的。

拿来做笔试题效果估计会不错,笔试题还就是拿来坑人的,不然哪个工作中会这么写。
PS:群里居然捕获一只司徒正美,真巧。