js题集2

1.输出结果和原因

console.log(a);  // undefined

console.log(b);    // b is not defined

window.b = 10;

var a = 20;

 

2.函数表达式和函数声明的特点。

如果不声明函数名称,一定是表达式 ;如果声明名称,要通过上下文来区分,如果function foo( ){ }是作为表达式的一部分,它是一个函数表达式,如果被包含在一个函数体内,或者位于程序的最顶部,是函数声明。

一种不常见的函数表达式,就是被括号括住的(function foo( ){ }),()是分组操作符,它的内部只能包含表达式。

表达式和声明存在非常微妙的差别:

首先,函数声明会在任何表达式被解析和求值之前先被解析和求值,即使声明在代码的最后一行,也会在作用域内第一个表达式之前被解析/求值。

另外,函数声明在条件语句内可用,但未被标准化,不同环境可能会有不同的执行结果,所以这种情况下,最好使用函数表达式

函数声明(Statement)的实际规则如下:

函数声明只能出现在程序或函数体内。

【从句法上讲,他们不能出现在Block(块)({ })中,例如不能出现在if,while或for语句中。因为Block中只能包含Statement语句,而不能包含函数声明这样的源元素。另一方面,唯一可能让表达式出现在Block中情形,就是作为表达式语句的一部分。但是表达式语句不能以关键字function开头。也就是说,函数表达式同样不能出现在Statement语句或Block中(因为Block就是由Statement语句构成的)。】

posted @ 2017-08-08 10:42  tong24  阅读(111)  评论(0编辑  收藏  举报