第一题:
function bar(){
return foo;
foo = 10;
function foo(){
}
var foo = "11";
}
console.log(typeof bar());
a. String b. Error c. function d. Number e. undefined
第二题:
function ahahaha(){
return
var test= {
name:"xiaoming"
}
test = 18
test = "Thank you for your teaching"
}
console.log( typeof ahahaha());
a. String b. Error c. function d. Number e. undefined
在实际编码中运用两点技巧,这类问题永远不会困扰我们。1、变量命名的重要性!2、用let不是var。——也就是说,这个题目要考察的内容是变量命名提升。
在JS里,使用函数声明语句和通过Var声明变量都会提前至作用域的顶部,而使用函数声明语句实际上相当于通过Var声明了一个变量,并把一个函数对象赋值给它,特别的是定义赋值也一同提前。又由于使用var重复声明变量是合法的,所以当函数声明语句和通过Var声明变量同时存在且使用的变量名相同时,该变量的初始值是该函数对象而不是undefined。所以第一题选C。
函数执行return语句时会导致函数停止执行,并返回它的表达式(如果有的话)的值给调用者。如果return语句没有一个与之相关的表达式,则它返回undefinded值。此外,由于js会在retrun语句后填补分号,并不会和下一行的语句合并解析,所以第二题选E。
网友评论