这是个设计错误。
当下开发中,只要有 ES6+, 任何时候都应该用 let 来替代 var.
【 在 sedelick (sedelick) 的大作中提到: 】
: 标 题: 为什么javascript语言允许重复定义/覆盖定义?
: 发信站: 水木社区 (Tue Jul 12 21:43:56 2016), 站内
:
: var f=function(input){console.log(input)}
: f('age')
: var f=function(input){console.log(input+"1")}
: f('age')
: var f2=new Function('input','return "hello, "+input');
: console.log(f2("kitty"))
: var f2=new Function('input','return "hello, "+input+1');
: console.log(f2("kitty"))
: console.log(typeof f)
: console.log(typeof f2)
: var f=function(i){console.log(i)}
:
: 上面的代码没有问题。我的问题是,在其他的常见语言如python/C#/C++当中,在同一个作用域内var f两次肯定是个语法错误。但是javascript的语法为什么这么怪异,允许重复定义?这样做的好处是什么?
: --
:
: ※ 来源:·水木社区
http://www.newsmth.net·[FROM: 123.123.255.*]
--
FROM 180.174.230.*