javaScript高级程序设计(浏览笔记一)
3.4JavaScript数据类型
- 基本数据类型:undefind,null,Boolean,string,number;
- 复杂数据类型:object --本质上是由一组无序的名值对组成;
3.4.1typeof操作符
对一个值使用typeof可能返回以下字符串
- “underfind” -- 如果这个值未定义
- “boolean” -- 如果这个值是布尔值
- “string” -- 如果这个值是字符串
- “number” -- 如果这个值是数值
- “object” -- 如果这个值是对象或者 null --因为特殊值null是被认为是一个空的对象引用
- “function” -- 如果这个值是函数
从技术角度上来讲,函数在ECMAScript中是对象,不是一种数据类型,然而函数也确实有些特殊的属性,因此通过typeof来区分函数和其他对象是有必要的
3.4.2underfind类型
underfind类型只有一个值,就是underfind,在使用var声明一个变量,并未对其加以初始化时,这个变量的值就是underfind
var message; alert(message == undefind); //返回true
对于未声明的变量,只能执行一项操作,就是typeof,返回underfind,否则报错
var message; alert(message); // underfind alert(news); // 报错 alert(typeof(message)) //underfind alert(typeof(news)) //underfind
3.4.3null类型
- null是第二个只有一个值的数据类型,这个特殊值是null,从逻辑上讲,null值表示一个空对象指针,而这也正是使用typeof 操作符检测 null值时会返回“object”的原因
- 实际上,underfind值是派生字null值,因此ECMA-262 规定对他们相等性测试要返回true ,即 (underfind == null)---->true
3.4.4boolean类型
将其他数据类型转换成 boolean 值,可以使用Boolean(),函数
3.4.5number类型
3.4.5function类型
- 函数实际上是对象,每个函数都是function类型的实例
- 函数有两种定义方法:
- 函数声明语法:
function sun(num1,num2){ return num1+num2; };
alert(sum(10,10)) //20
functio sum(num1,num2){
return num1+num2;
} - 函数表达式定义函数
var sum = function(num1,num2){ return num1+num2; };
alert(sum(10,10)) //报错
var sum = function(num1,num2){
return num1+num2;
}
- 函数声明语法:
- 解析器在执行环境中加载数据的时候,会率先读取函数声明,并使其在执行任何代码之前可以访问;至于函数表达式,则必须等到执行到函数的时候才能够访问;
- 每个函数都包含两个属性,length(函数参数的个数) 和 prototype(prototype中包含所有实例方法的存在);
- 每个函数都包含非继承而来的方法,apply(),和call();
- 作用1:传递参数
- 扩充函数赖以运行的作用域
-
window.color = "red"; var o = {color:'blue'}; function sayColor(){ alert(this.color); }; sayColor() //red sayColor.call(this) //red sayColor.call(window) //red sayColor.call(o) // blue
- ECMAScript5还定义了一个方法,bind(); 这个方法会创建一个函数实例,其this值会被绑定到传给bind()函数的值;
3.7取随机数封装函数
function selectForm(lowerValue,upperValue){ var choices = upperValue - lowerValue + 1; return Math.floor(Math.random()*choices + lowerValue); }; var num = selectForm(2,10) //取2-10之间(包括2和10)的随机数