Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用带有和不带有typof()的未定义_Javascript - Fatal编程技术网

Javascript 使用带有和不带有typof()的未定义

Javascript 使用带有和不带有typof()的未定义,javascript,Javascript,为什么这些线给出不同的结果 if (EventSource !== undefined) { // error if (typeof(EventSource) !== 'undefined') { // no error 您看到的错误,ReferenceError:EventSource未定义意味着JS引擎不知道谁是EventSource。它以前从未听说过它,它应该在那里读到一些东西,但它不知道是什么。typeof运算符受该错误的保护,并返回'undefined',而不是抛出错误,就像它对尚

为什么这些线给出不同的结果

if (EventSource !== undefined) { // error

if (typeof(EventSource) !== 'undefined') { // no error

您看到的错误,ReferenceError:EventSource未定义意味着JS引擎不知道谁是
EventSource
。它以前从未听说过它,它应该在那里读到一些东西,但它不知道是什么。
typeof
运算符受该错误的保护,并返回
'undefined'
,而不是抛出错误,就像它对尚未初始化的变量所做的那样。

您看到的错误,ReferenceError:EventSource未定义表示JS引擎不知道谁是
EventSource
。它以前从未听说过它,它应该在那里读到一些东西,但它不知道是什么。
typeof
运算符受该错误的保护,并返回
'undefined'
,而不是抛出错误,就像它对尚未初始化的变量所做的那样。

您看到的错误,ReferenceError:EventSource未定义表示JS引擎不知道谁是
EventSource
。它以前从未听说过它,它应该在那里读到一些东西,但它不知道是什么。
typeof
运算符受该错误的保护,并返回
'undefined'
,而不是抛出错误,就像它对尚未初始化的变量所做的那样。

您看到的错误,ReferenceError:EventSource未定义表示JS引擎不知道谁是
EventSource
。它以前从未听说过它,它应该在那里读到一些东西,但它不知道是什么。
typeof
运算符受此错误的保护,并返回
'undefined'
,而不是抛出错误,就像它对尚未初始化的变量所做的那样。

声明没有值的变量是
undefined

未声明的变量在您尝试使用它时会抛出错误,但在使用
typeof
时,您可以避免这种情况,因为检查未声明的变量会返回类型
“未定义”


之所以这样做,是因为
typeof
是一个始终返回字符串的运算符(不是函数),即使您向它传递了以前未声明的内容。

未声明值的变量是
未定义的

未声明的变量在您尝试使用它时会抛出错误,但在使用
typeof
时,您可以避免这种情况,因为检查未声明的变量会返回类型
“未定义”


之所以这样做,是因为
typeof
是一个始终返回字符串的运算符(不是函数),即使您向它传递了以前未声明的内容。

未声明值的变量是
未定义的

未声明的变量在您尝试使用它时会抛出错误,但在使用
typeof
时,您可以避免这种情况,因为检查未声明的变量会返回类型
“未定义”


之所以这样做,是因为
typeof
是一个始终返回字符串的运算符(不是函数),即使您向它传递了以前未声明的内容。

未声明值的变量是
未定义的

未声明的变量在您尝试使用它时会抛出错误,但在使用
typeof
时,您可以避免这种情况,因为检查未声明的变量会返回类型
“未定义”


之所以这样做,是因为
typeof
是一个运算符(不是函数),它总是返回一个字符串,即使您向它传递了以前未声明的内容。

因为
EventSource
未声明,请求未声明变量的值被视为引用错误

另一方面,
typeof
运算符能够将标识符作为操作数,而不获取其值,从而避免了错误


如果这是一个局部变量,您应该注意ReferenceError,并首先定义它

如果这是全局的,并且事先无法知道它的存在,则可以将其作为
窗口的属性检查:

if ("EventSource" in window) {


因为未声明
EventSource
,请求未声明变量的值被视为引用错误

另一方面,
typeof
运算符能够将标识符作为操作数,而不获取其值,从而避免了错误


如果这是一个局部变量,您应该注意ReferenceError,并首先定义它

如果这是全局的,并且事先无法知道它的存在,则可以将其作为
窗口的属性检查:

if ("EventSource" in window) {


因为未声明
EventSource
,请求未声明变量的值被视为引用错误

另一方面,
typeof
运算符能够将标识符作为操作数,而不获取其值,从而避免了错误


如果这是一个局部变量,您应该注意ReferenceError,并首先定义它

如果这是全局的,并且事先无法知道它的存在,则可以将其作为
窗口的属性检查:

if ("EventSource" in window) {


因为未声明
EventSource
,请求未声明变量的值被视为引用错误

另一方面,
typeof
运算符能够将标识符作为操作数,而不获取其值,从而避免了错误


如果这是一个局部变量,您应该注意ReferenceError,并首先定义它

如果这是全局的,并且事先无法知道它的存在,则可以将其作为
窗口的属性检查:

if ("EventSource" in window) {


根据ECMA-262标准草案:

8.7.1 GetValue(V):[…]如果IsUnsolvableReference(V),则抛出一个ReferenceError异常。[……]

11.4.3