关于JS的数据类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>关于JS的数据类型</title>
</head>
<body>
<script type="text/javascript">
/*
1.虽然JS中的变量在声明的时候不需要指定数据类型,但是在赋值,每一个数据还是有类型的。所以
这里也需要学习一下JS包括哪些数据类型?
JS中的数据类型有:原始类型,引用类型。
原始类型:Undefined Number String Boolean Null
引用类型:Object以及Object的子类
2.ES规范(ECMAScript规范),在ES6之后,又基于以上的6重类型之外添加了一种新的类型:Symbol
3.JS中有一个运算符叫做typeof,这个运算符可以在程序的运行阶段动态的获取变量的数据类型。
typeof运算符的语法格式:
typeof 变量名
typeof运算符的运算结果是以下6个字符串之一:注意是字符串全部都是小写。
undefined
number
string
boolean
object
function
*/
//求和,要求a变量和b变量将来的数据类型必须是数字,不能是其他类型
//因为以下定义的这个sum函数是为了完成两个数字的求和
function sum(a,b){
if (typeof a == "number" && typeof b == "number"){
return a + b;
}
alert(a + "," + b + "必须都为数字!")
}
var retValue = sum(1,2);
alert(retValue);
</script>
</body>
</html>
Undefined类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Undefined类型</title>
</head>
<body>
<script type="text/javascript">
// undefined类型只有一个值,这个值就是 underfined
// 当一个变量没有手动赋值,系统默认赋值undefined
// 或者也可以给一个变量手动赋值undefined.
var i; //undefined
var k = undefined; //undefined
alert(i == k)//true
var y = "undefined"; //"undefined"
alert(y == k);//false
</script>
</body>
</html>
Number类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Number类型</title>
</head>
<body>
<script type="text/javascript">
/*
1.Number类型包括哪些值?
整数,小数,正数,负数,不是数字,无穷大都属于
2.isNaN():结果是true则表示不是一个数字,结果是false则表示是一个数字
3.parseInt()函数
4.parseFloat() 函数
5.Math.ceil() 函数(Math是数学类,数学类当中有一个函数叫ceil(),作用是向上取整)
*/
var v1 = 1;
var v2 = 3.14;
var v3 = -100;
var v4 = NaN;
var v5 = Infinity; //无穷大
//Number
alert(typeof v1);
alert(typeof v2);
alert(typeof v2);
alert(typeof v4);
alert(typeof v5);
/*
关于NaN(表示Not a Number, 不是一个数字,但属于Number类型)
什么情况下结果是一个NaN呢?
运算结果本来是一个数字。最后算完不是一个数字的时候,结果是NaN。
*/
var a = 100;
var b = "中国";
alert(a / b); // 除号显然最后结果应该是一个数字,但是运算过程中导致最后不是一个数字,那么最后的结果是NaN
//Infinity (当除数为0时,结果为无穷大)
alert(3/0);
//关于isNaN函数
//用法: isNaN(数据), 结果是true表示不是一个数字,结果是false表示是一个数字
// isNaN : is Not a Number
function sum(a, b){
if (isNaN(a) || isNaN(b)){
alert("参与运算的必须是一个数字!")
return;
}
return a + b;
}
// parseInt() :可以将字符串自动转换成数字,并且取整数位
alert(parseInt("3.99999"))
alert(parseInt(3.99999))
// parseFloat() :可以将字符串自动转换成数字
alert(parseFloat("3.14") + 1); // 4.14
// Math.ceil() :向上取整数
alert(Math.ceil("2.1")); // 3
</script>
</body>
</html>
Boolean类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Boolean类型</title>
</head>
<body>
<script type="text/javascript">
/*
1.JS中的布尔类型永远只有俩个值:true 和 false(这一点和java相同)
2.在Boolean类型中有一个函数叫做:Boolean()。
语法格式:
Boolean(数据)
作用是将非布尔类型转换为布尔类型。(有就转换为true , 没有就转换成false)
不写就自动调用函数转换
*/
var username = "jaxck";
if(username){
alert("欢迎你");
}else{
alert("用户名不能为空!");
}
// Null类型只有一个值,null
alert(typeof null); // "object"
</script>
</body>
</html>
String类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>String类型</title>
</head>
<body>
<script type="text/javascript">
/*
String类型:
1,在JS当中字符串可以使用单引号,也可以使用双引号。
2.在JS中。怎样创建字符串?
第一种:var s = "asd"
第二种:(使用JS的内置的支持类String):var s2 = new String("asd");
需要注意的是:String是一个内置的类,可以直接用。String的父类是Object。
3.无论小string还是大String,属性和方法都通用。
4.关于String类型的常用属性和函数
常用属性:
length 获取字符串长度
常用函数:
last 获取指定字符串在当前字符串中第一次出现处的索引
indexOf 获取指定字符串在当前字符串中最后一次出现处的索引
replace 替换 (注意:只替换第一个出现的)
substr 截取子字符串
substring 截取子字符串
toLowerCase 转换小写
toUpperCase 转换大写
split 拆分字符串
*/
//小string(属于原始类型String)
var x = "asd";
alert(typeof x); // "String"
//大String(属于Object类型)
var x2 = new String("asd");
alert(typeof x2); //"Object"
//考点:substr和substring的区别
//substr(startIndex, length)
alert("abcdef".substr(2,4));
//substring(startIndex, endIndex) 不包括endIndex
alert("abcdef".substring(2,4));
</script>
</body>
</html>
Object类型
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Object类型</title>
</head>
<body>
<script type="text/javascript">
/*
Object类型:
1.Object类是所有类型的超类,自定义的任何类型,默认继承Object
2.Object类包括哪些属性:
prototype属性 (常用的。主要是这个):作用是给动态的扩展属性和函数。
constructor属性
3.Object类包括哪些函数
toString()
valueOf()
toLocaleString()
4.在JS当中定义的类默认继承Object。会继承Object类中所有属性以及函数
换句话说,自定义的类中也有prototype属性。
5.在JS中怎么定义类。怎么new对象?
定义类的语法:
第一种方式:
function 类名(形参){
}
第二种方式:
类名 = function(形参){
}
创建对象的语法:
new 构造方法名(实参); // 构造方法名和类名一致。
*/
function sayHello(){
}
//把sayHello当做一个普通的函数来调用
sayHello();
//这种把sayHello当做一个类来创建
var obj = new sayHello(); // obj是一个引用,保存内存地址指向堆中对象
function user(name,age){
this.name = name;
this.age = age;
}
//另一种方式创建
// user = function(name,age){
// this.name = name;
// this.age = age;
// }
var u1 = new user("zjagnsan",12);
//俩种方式
alert(u1.name);
alert(u1["age"]);
Product = function(pno,pname,price){
//属性
this.pno = pno;
this.pname = pname;
this.price = price;
//函数
this.getPrice = function(){
return this.price;
}
}
var xigua = new Product(111,"西瓜",4.0);
var pri = xigua.getPrice();
alert(pri); // 4
//可以通过prototype这个属性来动态属扩展函数以及属性
Product.prototype.getPane = function (){
return this.pname;
}
var name = xigua.getPane();
alert(name);
String.prototype.suibian = function (){
alert("这是给String方法扩展的随便")
}
"123".suibian();
</script>
</body>
</html>
NaN undefined null 这三个值的区别
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>NaN undefined null 这三个值的区别</title>
</head>
<body>
<script type="text/javascript">
//null NaN undefined 数据类型不一样
alert(typeof NaN); //"number"
alert(typeof null); // "object"
alert(typeof undefined); //"undefined"
// null 和 undefined可以等同
//== 是相对等同, ===是却对等同
</script>
</body>
</html>