var name='world'
;(function(){
if(typeof name === 'undefined'){
var name='jack' //这个匿名函数产生了局部作用域,var name 后变量提升,所以undefined
console.log('goodbay'+name)
}else{
console.log('hello'+name)
}
})() //goodbayjack
题目:
function Foo(){
getName=function(){
alert(1)
}
return this
}
Foo.getName=function(){
alert(2)} //把Foo作为一个函数对象!给它写方法getName
Foo.prototype.getName=function(){
alert(3)} //定义在Foo的原型对象上
var getName=function(){
alert(4)} //4和5都是定义在window,但4是变量,优先级更高
function getName(){
alert(5)}
Foo.getName() //调用Foo函数的方法:2
getName() //window上的方法:4
Foo().getName() //先调用Foo,返回的this是window,调用foo时会在全局生成getName覆盖之前的4,所以执行后是window的方法:1
getName() //1,window上的getname已经被覆盖了
new Foo().getName() //3 创建实例对象,