undefined

概述

undefined有多重角色,通常情况下,我们所说的undefined都指的是全局对象的一个属性"undefined".

语法

undefined 

描述

在JavaScript中,undefined这个词有多重含义.首字母大写的Undefined表示的是一种数据类型,小写的undefined表示的是属于这种数据类型的唯一的一个值.但这两种undefined都只能存在于文档或规范中,不能存在于JavaScript代码中.在JavaScript代码中,你看到的undefined最有可能是全局对象的一个属性,该属性的初始值是就是前面所说的原始值undefined,还有种情况就是,这个undefined是个局部变量,就像其他普通变量一样,没有任何特殊性,它的值不一定是undefined,但通常情况下都是的.下面我们所说的undefined,都指的是window.undefined这个属性.

在ES3中(Firefox4之前),window.undefined就是一个普通的属性,你完全可以把它的值改变成为任意的真值,但在ES5中((Firefox4之后),window.undefined成了一个不可写,不可配置的数据属性,它的值永远是undefined.

一个未初始化的变量的值为undefined,一个没有传入实参的形参变量的值为undefined,如果一个函数什么都不返回,则该函数默认返回undefined.

你可以使用严格相等运算符来判断一个值是否是undefined:

var x;
if (x === undefined) {
   // 执行到这里
}
else {
   // 不会执行到这里
}

注: 这里必须使用严格相等运算符===,而不能使用普通的相等运算符==,因为x == undefined成立还可能是因为x为null,在JavaScript中null== undefined是返回true的.

另外,还可以使用typeof来判断:

var x;
if (typeof x === ‘undefined‘) {
   // 执行到这里
}

有时必须使用typeof的原因是,如果一个变量根本没有被声明,只有使用typeof判断才不会报错,用相等运算符判断会抛出异常.

// x没有被声明过
if (typeof x === ‘undefined‘) { // 不会报错
   // these statements execute
}

if(x === undefined){ // 抛出ReferenceError异常

}

不过如果要检测的变量是个全局变量,可以不使用typeof.可以通过检测全局对象的同名属性来代替:

// x可能没有被声明过,但如果已经声明了的话,x是个全局变量
if (window.x === undefined) { // 即使window.x不存在,也不会报错
   // 可能会执行到这里
}

if(x === undefined){ // 如果window.x不存在,则会抛出ReferenceError异常

}
时间: 2024-10-27 02:03:19

undefined的相关文章

前端面试准备2----Javascript中的Undefined和null小结

JavaScript中有两个表示“空”的值,分别是Undefined和null: (1)Undefined 定义了一个全局变量,它的值是 undefined,这个变量也被称为undefined. 但是这个变量不是一个常量,也不是一个关键字.这意味着它的值可以轻易被覆盖. ES5 提示: 在 ECMAScript 5 的严格模式下,undefined 不再是可写的了. 但是它的名称仍然可以被隐藏,比如定义一个函数名为 undefined. 下面的情况会返回 undefined 值: 访问未修改的全

Undefined index:

$username=$_POST["username"]; 初学时发现这个错误, Undefined index: username 如果不仔细看,还以为是$username报错,实际上是"username"报错.也就是跟踪的时候倒是看得到值,但为什么没有赋值呢? 理由很简单就是请求方式不一样,因为我用的GET请求,改回来就可以了. $username=$_GET["username"]; 抄袭严重啊,很多都说是php.ini中的配置问题,但是相

Cannot read property 'Store' of undefined nodejs express session

Express在使用mongodb的时候app配置出错!  "Cannot read property 'Store' of undefined" 原因主要是express版本4++问题 //settings.js module.exports={ cookieSecret:"xxxx", db:"dbname", host:"localhost", } //app.js var express = require("

php运行出现Call to undefined function curl_init()的解决方法

简单说,调试报错了,Call to undefined function curl_init(). 度了下,大家都说这样可以搞定(WAMP环境): 1.在php.ini中找到extension=php_curl.dll,去掉前面的,php.ini一般在c:\windows下面. 2.在php.ini中找到extension_dir = "ext",去掉前面的;,改为extension_dir = "C:\php5\ext"."C:\php5\ext&quo

caffe日常坑系列之:undefined reference to symbol '_ZN2cv6String10deallocateEv'

在使用caffe库编译C++时出现的 解决如下: /usr/bin/ld: /tmp/ccA5JGRP.o: undefined reference to symbol '_ZN2cv6String10deallocateEv'//usr/local/lib/libopencv_core.so.3.2: error adding symbols: DSO missing from command line解决:sudo apt-get autoremove libopencv-dev caffe

在codeblocks 下,C++编译不成功一直出现“undefined reference to `std::cout'|

自己搞了好久才知道,编辑c++,要用g++ 希望对大家有帮助 在codeblocks 下,C++编译不成功一直出现"undefined reference to `std::cout'|

在ubuntu16.10 PHP测试连接MySQL中出现Call to undefined function: mysql_connect()

1.问题: 测试php7.0 链接mysql数据库的时候发生错误: Fatal error: Uncaught Error: Call to undefined function mysqli_connect() 即使把 /etc/php/7.0/apache2/php.ini 中的行: ;extension=php_mysql.dll 修改成(即:取消行前面的分号";"): extension=php_mysql.dll 问题依然没解决. 测试文件: require_once __D

jquery插件开发;(function ( $, window, document, undefined ){}(jQuery, window,document)分析

经常看到许多jquery插件是这种形式: ;(function( $, window, document, undefined ){}){ //...code }(jquery,window,document) 一开始自己也是不太清楚,后台查了许多资料博客,基本了解大意,所以总结出来,以供之后查阅更正. 1.自调函数(function(){})() 这是一个自调函数,函数定义后自行调用.将匿名函数放在括号之内,并紧跟一个括号.第二个括号的意思是"立即调用".同时第二个括号也是向匿名函数

Linux下运行《UNIX环境高级编程》undefined reference to `err_quit 编译出错的处理方法

错误信息: : undefined reference to `err_quit': undefined reference to `err_sys' 解决方法: 因为err_quit跟err_sys是作者自己定义的错误处理函数.所以最简单的解决办法是修改下apue.h文件,如下 /* * Our own header, to be included before all standard system headers. */ #ifndef _APUE_H #define _APUE_H #d

javascript学习笔记 null和undefined

============================================ null是javascript语言的关键字,它表示一个特殊值,常用来描述“空值”.对null执行typeof预算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”.但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字.字符串和对象是“无值”的. JavaScript还有第二个值来表示值的空缺.用未定义的值表示更深层次的“空值”.它是变量的一个取