javascript常见错误(1)
来源:互联网 发布:wdcp 安装多版本php 编辑:程序博客网 时间:2024/06/05 21:01
看下面的代码:
(function() { var x=foo(); var foo=function foo() { return “foobar”; }; return x;})();
在编辑器后运行后返回“TypeError”
为什么不是 “foobar”?
原因出在
var foo=function foo() {return “foobar”};
第一个代码块的第二行foo变量“被提前”了,但是它的赋值(也就是函数)并没有被提前,所以变量声明的时候还没有这个函数。
从这一点上来说,和前面我们所讲的变量“被提前”是完全一致的,并且,由于“被提前”的变量的默认值是 undefined。
总结:
函数声明可以被提前,但函数表达式不能被提前
写成下面的样子就没什么问题:
(function() { var foo=function foo() { return “foobar”; }; var x=foo(); return x;})();
下面在牛客网看到的这个代码同理
var name=’World!’;(function() {if(typeof name===’undefined’) {var name=’Jack’;console.log(‘Goodbye’+name);} else {console.log(‘Hello’+name);}})();
输出结果为:Goodbye Jack
原因同上,也是变量声明提升的问题。
(function(){ var name;//注意这里,变量提升 if(typeof name === 'undefined'){ name = 'Jack'; console.log('Goodbye'+name); }else{ console.log('hello'+name); }})();
变量生明会提升到当前作用域的顶部,一个函数就是一个作用域
0 0
- javascript常见错误(1)
- javascript 常见错误(失误足迹)
- javascript常见错误
- javascript常见错误解释
- 常见的JavaScript错误
- 常见的JavaScript错误
- 常见的JavaScript错误
- javascript常见错误解释
- JavaScript 常见错误
- JavaScript 中的常见错误
- javascript常见错误
- 使用JavaScript常见错误集锦
- 常见的JavaScript错误(转)
- Ajax常见错误(1)
- Python常见错误(1)
- javaScript 中常见的10种错误
- JavaScript基础之常见的错误
- JavaScript之DOM管理常见错误:
- 【组图】一张图看清中西文化差异
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- Linux中的perror,exit(),_exit(),wait,waitpid比较
- [Linux] rsync复制
- POJ 3672 Long Distance Racing G++
- javascript常见错误(1)
- 浅入浅出 Android 安全(六)Android 安全的其它话题
- CCF之日期计算(java)
- session多服务器共享的方案梳理
- 已知中序和后序||前序, 求前,后,层序遍历问题
- Ubuntu16.04下Caffe环境搭建:cuda8.0 + opencv3.2.0
- AngularJs模块加载 运行块
- 动态规划----背包
- 文章标题