javascript变量显示意外结果

时间:2015-07-20 18:17:02

标签: javascript scope

为什么我得到一个ReferenceError:无法在控制台中找到变量lang1? 如果lang存在,那么lan1也不存在吗?...

<body>
    <input id="datetimepicker" type="text" placeholder="Datetimerpicker">
        <input id="lang" type="text" placeholder="language" value="en"><div class="select">select language</div>

    <script>
     $(".select").click(function(){
        var lang = $('#lang').val();
        var lang1 = lang;
    });
    </script>
</body>

并且不应该lang = "en"?我在控制台中获得lang = <input id=​"lang" type=​"text" placeholder=​"language" value="en">​

2 个答案:

答案 0 :(得分:4)

如果您想为您的功能使用浏览器调试工具,您必须按照工具的方式执行操作。只需在控制台命令提示符下键入Router.route('/templateName', { waitOn: function () { return Meteor.subscribe('collectionName'); }, action: function () { // render all templates and regions for this route this.render(); } }); lang就不会真正做到你想要的。在这种情况下,符号lang1将引用您使用lang作为lang字段的“id”时所暗示的全局符号。

您可以使用这些工具在事件处理程序中设置断点。一种简单的方法是在“click”处理程序的开头添加<input>语句:

debugger

从那时起,调试工具将为您提供一种方法,让您可以查看活动函数中的变量值(以及使您在那里的函数)。

答案 1 :(得分:3)

您无法在控制台中引用langlang1,因为它们位于点击关闭的本地。在控制台中定义lang的原因是它将使用与您的变量匹配的任何元素ID。将变量更改为langX,您将遇到相同的错误。