数据类型
var length = 11;// 数字
var lastName = "Gates";// 字符串
var cars = ["Porsche", "Volvo", "BMW"];// 数组
var x = {firstName:"Bill", lastName:"Gates"};// 对象
字符串(String)
字符串(或文本字符串)是一串字符(比如 "qwer")。字符串被引号包围,可使用单引号或双引号。
<script>
/*
JS中创建字符串对象有两种方式,
但是属性和函数都是通用的。
*/
var s = "第一种(小string)";
alert(typeof s);//string
var ss = new String("第二种(大string)");
alert(typeof ss);//object
/*----------常用函数----------*/
var func = "JavaScript";
//获取字符串长度
alert(func.length);//10
//返回某个指定的字符串值在字符串中首次出现的位置
alert(func.indexOf("va"));//2
//如果要检索的字符串值没有出现,则该方法返回 -1
alert(func.indexOf("m"));//-1
//判断字符串是否包含某个子字符串
alert(func.indexOf("n") >= 0 ? "包含" : "不包含");//不包含
//返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
alert(func.lastIndexOf("ri"));//6
//在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
alert(func.replace("Java","Live"));//LiveScript
//substr()和substring()的区别。
//在字符串中抽取从start下标开始的指定数目的字符,stringObject.substr(start,length)
alert(func.substr(4,6));//Script
//提取字符串中介于两个指定下标之间的字符(不包含endIndex)。
alert(func.substring(1,3));//av
</script>
数字(Number)
JavaScript 只有这一种数值类型。整数、小数、正数、负数、不是数字(NaN)、无穷大(Infinity (或-Infinity))都属于Number类型。
<script>
/*
数字和字符串相加
JS的加法和级联(concatenation)都使用 + 运算符。
数字用加法。字符串用级联。
JS从左向右进行编译,
在有+运算符的情况下,数字相加就是数字;
但只要有字符串的参与,结果都是字符串级联。
*/
var x = 10;
var y = 20;
var z = "The result is: " + x + y;
alert(z);//The result is: 1020
/*
从左到右运算时先算10+20,数字之间是加法,得30;
遇到字符串“30”后用级联,所以是3030。
*/
var t = "30";
var result = x + y + t;
alert(result);//3030
/*
在使用减(-)乘(*)除(/)运算符时,
字符串拥有数字内容的话,会被转换成数字进行运算。
*/
var n = "10";
var m = "20";
var mn = (m-n)+(m/n)+(n*m)
alert(mn);//212
/*
NaN属于JS保留词,指示某个数不是合法数。
用一个非数字字符串进行除法会得到NaN(Not a Number)。
*/
var a = 11;
var b = "aaa";
alert(a / b);//NaN
/*--------------------数字方法--------------------*/
/*全局JS函数isNaN()可以确定某个值是否是数*/
alert(isNaN(b));//true(表示不是一个数字)
/*全局JS函数parseInt,
可以将字符串自动转换成数字,
并且取整数位。*/
alert(parseInt("3.999999"));//3
/*全局JS函数parseFloat,
可以将字符串自动转换成数字*/
alert(parseFloat(3.2) + 1);//4.2
/*函数Math.ceil,可以向上取整*/
alert(Math.ceil(1.2));//2
/*--------------------数字方法--------------------*/
/*在数学运算中使用NaN的话,结果也是NaN*/
var nan = NaN;
alert(a + nan);//NaN
/*
Infinity(或-Infinity)
是JS在计算数时超出最大可能数范围时返回的值。
除以0也会生成 Infinity。
*/
function inf(){
var myNumber = 2;
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
return myNumber;
}
var inf = inf();
alert(inf);//Infinity
</script>
布尔(Boolean)
1、布尔值只有两个值:true 或 false。
2、在Boolean类型中有一个函数:Boolean()。语法格式:
Boolean(数据)
Boolean()函数的作用是将非布尔类型转换成布尔类型,有东西就是true,没有就是false。
<script>
var name = "";
if(name){
alert("欢迎你"+name);
}else{
alert("用户名不能为空!")
}
</script>
数组(Array)
JavaScript 数组用方括号书写,数组的项目由逗号分隔。
对象(Object)
1、是所有类的超类,JavaScript对象用花括号来书写,对象属性是name:value
对,由逗号分隔。
var person = {
firstName:"Bill",
lastName:"Gates",
age:62,
eyeColor:"blue"};
2、Object包含属性有: prototype 属性、constructor 属性;方法有:toLocaleString 方法、toString 方法、valueOf 方法。
3、如何创建对象
<script>
//如何创建对象
function haha(){
alert("haha");
}
//当做普通函数来调用
haha();//haha
//当做类来创建对象
var obj = new haha();//haha
alert(obj);//[object Object]
</script>
4、函数及扩展函数
<script>
Haha = function(a,b,c){
//声明属性
this.no = a;
this.name = b;
this.age = c;
//函数
this.getAge = function(){
return this.age;
}
}
var u1 = new Haha(11,"zhangsan",20);
var uage = u1.age;
alert(uage);//20
//可以通过prototype这个属性来给类动态扩展属性以及函数
Haha.prototype.getNo = function(){
return this.no;
}
//调用扩展的getNo函数
var uno = u1.no;
alert(uno);//11
//给string扩展一个函数
String.prototype.xixi = function(){
alert("string扩展函数");
}
"aaa".xixi();//string扩展函数
</script>
空(Null)
1、在 JavaScript 中,null 是 "nothing"。它被看做不存在的事物。但是,在 JavaScript 中,null 的数据类型是对象。
2、可以把 null 在 JavaScript 中是对象理解为一个 bug。它本应是 null。
3、可以通过设置值为 null 清空对象(也可以通过设置值为 undefined 清空对象):
var person = null;// 值是 null,但是类型仍然是对象
alert(typeof null);//object
4、空值与undefined不是一回事,空的字符串变量既有值也有类型:
var car = "";// 值是 "",类型是 "string"
未定义(Undefined)
1、在JavaScript中,没有值的变量,其值是undefined。typeof 也返回undefined。
2、任何变量均可通过设置值为undefined进行清空。其类型也将是undefined:
person = undefined;// 值是 undefined,类型是 undefined
3、null、NaN、undefined
<script>
alert(null == NaN);//false
alert(null == undefined);//true
alert(undefined == NaN);//false
</script>
JavaScript 拥有动态类型
JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型:
var x; // x 为 undefined
var x = 5; // 现在 x 为数字
var x = "John"; // 现在 x 为字符串
typeof 运算符
1、JS中有一个运算符叫做typeof,这个运算符可以在程序的运行阶段动态的获取变量的数据类型。
2、typeof运算符的语法格式:
typeof 变量名
3、typeof运算符的运算结果是以下6个字符串之一,注意字符串都是小写(typeof运算符返回变量或表达式的类型。):
"undefined"、"number"、"string"、"boolean"、"object"、"function"
<script>
function sum(a,b){
if(typeof a == "number" && typeof b == "number"){
return a + b;
}
alert("格式错误");
}
var value = sum(2,"abc");
alert(value);
//格式错误
//undefined
var value2 = sum(1,2);
alert(value2);//3
var q;
alert(typeof q);//undefined
var w = 11;
alert(typeof w);//number
var e = "abc";
alert(typeof e);//string
var r = null;
alert(typeof r);//object
var t = false;
alert(typeof t);//boolean
function mc(){}
alert(typeof mc);//function
</script>
===运算符
当使用===
相等运算符后,相等的数变为不相等,因为===
运算符需要类型和值同时相等。
<script>
var x = 500;
var y = new Number(500);
var z = 500;
alert(x === y);//false
/*因为x和y的类型不同。*/
alert(x === z);//true
</script>