美文网首页
奇怪的js 变量声明提前

奇怪的js 变量声明提前

作者: 风吹枫落van | 来源:发表于2016-11-26 23:54 被阅读51次

最近学习到js的变量声明提前部分,然后搜索看看网上的文章,然后发现了一个非常好玩的东东

var a = 1;
var a;
alert(typeof a);
(function () {
  b = '-----';var b; 
})();
alert( typeof b);

根据声明提前的规则结果是

number
undefined

接着看如下代码段:

name="aaa";
function test(){
  alert(typeof name);
  var name="bbb";
  alert(typeof name);
}
test();

结果是

undefined
string

接下来是最好玩的

alert(typeof name);
var name="hello world";
alert(typeof name);

请问结果应该是什么?
按照规则

undefined
string

没错,我也是这样想的,但是,请自行在浏览器中尝试
得到的结果却是

string
string

如果你的不是,那么恭喜你,你应该用的是ie浏览器,
因为
在chrome 中(包括基于它的一系列国产浏览器)
name 有默认值,是个空字符串
那么这个空字符串来自哪里呢?
答案是来自

window.name

默认值就是个空字符串

所以在测试的时候一定要起个奇怪的变量名才不容易被其他因素误导,
比如
汉语拼音-
参考资料
JavaScript变量声明提前
在JavaScript中特殊的变量
window.name

相关文章

  • 奇怪的js 变量声明提前

    最近学习到js的变量声明提前部分,然后搜索看看网上的文章,然后发现了一个非常好玩的东东 根据声明提前的规则结果是 ...

  • JS作用域

    JS模块化 JS中变量声明问题 JS为弱类型,编译型语言声明提前在JS中,声明语句会被提前到文件首 静态类型为强类...

  • #hello,JS:03-02 声明提前和立即执行函数

    一、声明提前 1、变量声明提前——变量提升 可参照这里的描述: #hello,JS:01数据类型、运算符、运算符优...

  • ES6

    编译/转换 在线转换(引入browser.js, ... ) 提前编译 变量 var变量存在的缺点: 可以重复声明...

  • 2016-11-23

    NAN表示一种非数据。 声明提前:JS在运行的时候会把所有变量提前到顶部,只是把声明提前,不会把赋值提前。 开关:...

  • 2016.11.23.JS

    NaN:表示非数字 声明提前:js在运行的时候,会把所有的变量提前到顶部,但只会把声明提前,不会把赋值提前 函数才...

  • JS的基本小结

    JS基本输出方式 JS数据类型 变量 常量 变量常量小练习 声明提前 隐式转换 显示转换/强制转换

  • JS中的变量提升

    js和其他语言一样,都要经历编译和执行阶段。而js在编译阶段的时候,会搜集所有的变量声明并且提前声明变量,而其他的...

  • Day06 JavaScript

    1. JS 输出方式 2.JS变量声明 3.JS声明提前 4.JS基本数据类型 5.JS数组 6.JS对象 7.J...

  • 函数,循环,数组,字符串

    变量和函数预解析:只把变量a的声明提前,赋值不提前,所以弹出undefined,表示它的定义 流程控制语句,JS中...

网友评论

      本文标题:奇怪的js 变量声明提前

      本文链接:https://www.haomeiwen.com/subject/jobgpttx.html