请问,这段代码输出什么?

srf32br 2012-11-22 06:39:38
<script type="text/javascript">
function checkscope(d) {
var i = 0;
if (typeof d == "object") {
var j = 0;
for (var k = 0; k < 10; k++) {
document.write(k);
}
document.write(k);
}
document.write(j);
}
checkscope("精华");
</script>


这段代码,运行之后,为什么输出的是一个undefined呢?k的值0---9应该输出吧,j的值也应该输出0啊,为什么呢?
...全文
268 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱若如梦 2012-11-25
  • 打赏
  • 举报
回复
typeof d == "object" 这样的用法不太常见 一般都是 if(d)就可以 或者if(!!d) 就可以判断d是否为空了
josephSC 2012-11-24
  • 打赏
  • 举报
回复
同意只输出一个j的undefined
田小瘦 2012-11-23
  • 打赏
  • 举报
回复
肯定是undefined 。。。。根本不会进if 你传的“精华”并不是object
wbb123yu 2012-11-23
  • 打赏
  • 举报
回复
引用 5 楼 srf32br 的回复:
引用 1 楼 showbo 的回复:JavaScript code?123456789101112 function checkscope(d) { var i = 0; if (typeof d == "object") {//这个不成立,所以没有执行j=0赋值操作,但是if没有作用域,var申明的j预编译已经生成,为undefined……
。。。if没执行 里面的document.write(k)等于废了 咋输出?
hch126163 2012-11-23
  • 打赏
  • 举报
回复
"精华" 是 string 只执行了 document.write(j); j 未赋值
「已注销」 2012-11-23
  • 打赏
  • 举报
回复
输出0
「已注销」 2012-11-22
  • 打赏
  • 举报
回复
indexof
  • 打赏
  • 举报
回复
#2已经说了 typeof d等到的结果是string,和object对比肯定不对了,所以没执行j=0赋值操作,是undefined,你看我发的第二个代码就清楚了,只执行了最后的一个 document.write(j);语句
srf32br 2012-11-22
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
JavaScript code?123456789101112 function checkscope(d) { var i = 0; if (typeof d == "object") {//这个不成立,所以没有执行j=0赋值操作,但是if没有作用域,var申明的j预编译已经生成,为undefined var j ……
《JS权威指南》说的:函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的... 那么,变量k和j都应该输出undefined吧,为什么只输出一个undefined
srf32br 2012-11-22
  • 打赏
  • 举报
回复
所以,学了c#,学JS,真的想发吐,明明if块没有执行,还是定义了变量j
  • 打赏
  • 举报
回复
typeof(d)为 string if后面的压根就没执行 直接执行document.write(j); j在哪里定义的?不输出undefined输出什么?
  • 打赏
  • 举报
回复
    function checkscope(d) {
        var i = 0;
        if (typeof d == "object") {//这个不成立,所以没有执行j=0赋值操作,但是if没有作用域,var申明的j预编译已经生成,为undefined
            var j = 0;
            for (var k = 0; k < 10; k++) {
                document.write(k);
            }
            document.write(k);
        }
        document.write(j);
    }
    checkscope("精华");
你的代码等价于下面
    function checkscope(d) {
        var i = 0;
        var j/////
        if (typeof d == "object") {
            vj = 0;
            for (var k = 0; k < 10; k++) {
                document.write(k);
            }
            document.write(k);
        }
        document.write(j);
    }
    checkscope("精华");

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧