(function(){
var foo;
console.log(typeof foo); //function
function foo(){}
foo = "foo";
console.log(typeof foo); //string
})();
不懂第二个为什么打印 string 啊?
foo已经是函数了,函数能直接赋值成字符串?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
javascript 是弱类型的语言,变量没有类型声明,都是按照赋值时值的类型来确定类型的。
提升以后变成这样子:
所以,当第二个
typeof foo的时候,foo已经是一个string了感觉你应该这样问:
相当于:
JS是弱类型语言,类型是可以变的。给foo赋值字符串"foo"后,foo变量就是字符串类型了。同理,给foo = 1后typeof foo就是number了。