JavaScript为什么会有 undefined值。

ECMAScript variables are loosely typed, meaning that a variable can hold any type of data. Every

variable is simply a named placeholder for a value. To define a variable, use the var operator (note

that var is a keyword) followed by the variable name (an identifier, as described earlier), like this:

var message;

This code defines a variable named message that can be used to hold any value. (Without

initialization, it holds the special value undefined, which is discussed in the next section.)

ECMAScript implements variable initialization, so it’s possible to define the variable and set its

value at the same time, as in this example:

var message = “hi”;

Here, message is defined to hold a string value of “hi”. Doing this initialization doesn’t mark

the variable as being a string type; it is simply the assignment of a value to the variable. It is still

possible to not only change the value stored in the variable but also change the type of value, such

as this:

var message = “hi”;
message = 100;
//legal, but not recommended

In this example, the variable message is first defined as having the string value “hi” and then

overwritten with the numeric value 100. Though it’s not recommended to switch the data type that

a variable contains, it is completely valid in ECMAScript.

From:

Professional JavaScript for Web Developers (2012)

[个人意见,纯属个人理解]JavaScript是弱类型语言,一个变量可以是任何类型,而且随着赋值或初始化于值的不同而改变,那如果一个变量只声明不初始化也不赋值,这个变量编译器默认初始化什么呢。

C,C++,java语言是强类型的,都会根据其类型提供默认初始化,但JavaScript编译器没能力判断,所以必须提供一个与上述语言不同的默认值,估计就这样,选择undefined了。

时间: 2024-10-17 20:04:22

JavaScript为什么会有 undefined值。的相关文章

【Javascript 基础】比较 undefined 和 null 值

JavaScript 中有两个特数值: undefined和null,在比较它们的时候需要留心.在读取未赋值的变量或试图读取对象没有的属性时得到的就是 undefined 值. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Learn4UndefinedAndNull</title> </head

Effective JavaScript Item 54 将undefined视为&quot;没有值&quot;

将undefined视为"没有值" JavaScript中的undefined是一个特殊的值:当JavaScript没有提供具体的值时,它就会产生undefined. 比如: 未被赋值的变量的初始值就是undefined 访问对象中不存在的属性会得到undefined 没有返回值的函数,undefined会作为其返回值 函数的参数没有提供时,它的值就是undefined // 情形1 var x; x; // undefined // 情形2 var obj = {}; obj.x;

Javascript 中的false,零值,null,undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来看看他们的类型分别是什么: <script type="text/javascript"> alert(typeof(false) === 'boolean'); alert(typeof(0) === 'number'); alert(typeof("")

javascript函数参数、返回值类型检查

实现带参数.返回值类型声明的js函数: 类型定义:window.Str = Type.Str = Type.define('STRING', Type.isStr);var Per = Type.define('PERSON', function(p){    return p && p.type === 'person' && p.name;}); 定义函数:var addStr = Str(function(a, b){  return a + b;}, Str, St

JavaScript中null和undefined

JavaScript的数据类型大体分为两类:原始类型和对象类型.其中,原始类型包括数字.字符串和布尔值.此外,JavaScript中还有两个特殊的原始值:null(空)和undefined(未定义),它们不是数字.字符串和布尔值,它们通常分别代表各自特殊类型中唯一的成员. null null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”.对null执行typeof预算,结果返回字符串“object"(如下图),所以说,也可以将null认为是一个特殊的对象值,它的含义是“

JavaScript中null和undefined的总结

先说null,它表示一个特殊值,常用来描述“空值”.对null执行typeof运算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是“非对象”(感觉怪怪的).实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字.字符串和对象是“无值”的. JavaScript还有第二个值来表示值的空缺,就是undefined啦,用未定义的值表示更深层次的“空值”.undefined出现有4种情况:①变量声明但没有初始化时②要查询的对象属性或数组的元素不存在时③

JavaScript强化教程——对象的值传递和引用传递

本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程--对象的值传递和引用传递 function SetName(obj){  obj.name="Tom";//执行之前,此时的obj和Person的name属性均为undefined  obj1=new Object();  obj1=obj;//声明一个全局对象,那么obj.obj1和Person此时应该是同一个对象  }//SetName函数执行完之后,obj对象销毁,其余对象仍然存在  Pe

JavaScript经典代码【一】【javascript HTML控件获取值】

javascript HTML控件获取值 1.下拉列表框选定值 ddlPageSize.options[ddlPageSize.selectedIndex].value ddlPageSize.options[ddlPageSize.selectedIndex].text 复选框 $get('chkGoogle').checked 控件隐藏与显示: document.getElementById("控件名").style.display='' //显示 document.getElem

JavaScript typeof, null, 和 undefined

JavaScript 数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object Date Array 2 个不包含任何值的数据类型: null undefined 例子: typeof "John"                 // 返回 string typeof 3.14                   // 返回 numbertypeof NaN