Day12
●javascript数据类型
①基本数据类型:
- 数值(2)字符串(3)布尔型
小技巧:通过typeof关键字可以看到变量的具体数据类型是什么。
举例:
<html>
<head>
<script language="javascript">
var v1 = "abc";
var v2 = 890;
//typeof 可以看到数据的类型
window.alert("v1是"+typeof v1);
window.alert("v2是"+typeof v2);
v1 = 567;//js是动态语言
window.alert("v1现在是"+typeof v1);
</script>
</head>
<body>
</body>
</html>
②复合数据类型
- 数组(2)对象
③特殊数据类型
- Null
举例:var a = null;
2、undefine
举例:window.alert(t); //报错,未定义
Var aa ;//没有赋值直接用的话,弹出undefined错误
●javascript基本数据类型三大类型
1、整型常量(10进制、8进制、16进制)
十六进制以0x或0X开头,例如:0x8a
八进制必须以0开头,例如0123
十进制的第一位不能是0(数字0除外),例如:123
2、实型常量
12.3、198.98、5E7(科学计数法)、4e5等
特殊数值:NaN(Not a Number)、Infinity(无穷大)、
有两个函数可以判断是不是NaN,infinity;
isNaN()—>判断是不是一个数、
isFinite()—>检查某个数是否为有穷大的数。
举例:
var a ="abc";
var b =parseInt(a);
window.alert(b);
var a ="abc";
var b =parseInt(a);
window.alert(b);
window.alert(6/0);
widow.alert(isNaN("abc")); //返回真
3、布尔类型
True false
举例:var a = true; var b = false;
4、String字符串
“javascript”
转义字符:
var c ="asdf\"asd" ; //字符串中有双引号,要用转义字符
window.alert(c);
●js基本语法—定义变量、初始化、赋值
☞定义变量
Vara ;这就是定义变量;
☞初始化变量
在定义变量的时候,就给值。
Var a = 45;这就是初始化变量;
☞给变量赋值
定义之后,再给值。
●js基本语法—数据类型转换
☞自动转换
数据类型是动态的。//前面提到过
☞强制转换
如何字符串转成数字?
Var a = parseInt(“123”); //使用系统函数强制转换
Var b = parseFloat(“12.3”);
Var b = 90; //b是number
Var b =b+””; // b是String
●js基本语法—运算符
☞算术运算符
常用的:+(加)、—(减)、x(乘)、/(除)、%(取模)
取模通常用于判断两个数是否能够整除。主要用于整数。
除此之外:还有++(自加)、--(自减)
还有=+、-=、/=、%=等。
这些和所有编程语言中的一样。
☞关系运算符
①== ②< ③< ④<= ⑤>= ⑥! =
介绍window.prompt()和Document.writeln()方法。
var val = window.prompt("请输入值","");
varval2 = window.prompt("请再输入一个值")
window.alert(typeofval);//注意这里接受的是字符串
document.writeln("您的输入是:"+(parseFloat(val)+parseFloat(val2)));
一个关系运算符的案例:
/*编写一个程序,该程序可以接受两个数(可以是整数,也可以是小数)
并判断两个数的大小*/
var num1 =window.prompt("请输入第一个数:");
var num2 =window.prompt("请输入第二个数:");
num1 =parseFloat(num1);
num2 =parseFloat(num2);
if(num1>num2){
window.alert("num1>num2");
}elseif(num1<num2){
window.alert("num1<num2");
}elseif(num1 == num2){
window.alert("num1= num2");
}
☞逻辑运算符
①&&与 ②||或 ③! 非
同java语言一样。
①If(逻辑表达式1&&逻辑表达式2){
}
如果逻辑表达式1为true,则js引擎会继续执行逻辑表达式2
如果逻辑表达式1为false,则js引擎不会再执行逻辑表达式2
②If(逻辑表达式1||逻辑表达式2||…){
}
如果任何一个逻辑表达式为true,则整个式子为true
- If(!逻辑表达式){
}
如果逻辑表达式为true,则【!逻辑表达式】为false;
如果逻辑表达式为false,则【!逻辑表达式】为true;
特别说明:在逻辑运算中,0、“”、false、null、undefined、NaN均表示为假。
Var a =0;
If(!a){
Window.alert(“Ok”);
}
这里有一个非常重要的知识:
/*在js中,||究竟返回什么*/
案例1:
var a = 4;
var b = 90;
var c = a||b;//c是4,为什么?
window.alert(c);
案例2:
var a = 0;
var b = "";
var d = false;
var c = a||b||d;//这时c=false;
window.alert(c);
☞ ||返回的不一定是一个布尔值。
||将返回第一个不为false的值(对象亦可),或是返回最后一个值(如果全部为false的话)
☞位运算和移位运算
Js中的位运算和移位运算,其规范和java一致;
看一个案例:
var a = 4>>2;
//4的二进制是00000100,右移2位,则变成了00000001。
window.alert(a);//输出1
var a = -4>>2;
//-4的原码:1000000000000100 -->反码:11111111 11111011
//-->补码:1111111111111100,右移2位,则变成了1111111111111111。
//-->反码:1111111111111110 -->10000000 00000001
window.alert(a); //输出-1
●js基本语法—三大流程控制
☞顺序控制
对编程而言,不控制其流程就是顺序执行。
☞分支控制
◆单分支
基本语法:
If(条件表达式){
//语句;
}
◆双分支
基本语法:
If(条件表达式){
}else{
}
◆多分支
基本语法:
If(条件表达式1){
}else if(条件表达式2){
}else if…(){
}
强调:一旦找到一个满足条件的入口,执行完毕后,就直接结束。
除了if分支还有switch分支:
Switch(条件表达式){
Case 常量1://执行语句;break;
Case 常量2://执行语句;break;
Case …
Default://什么条件都不满足,执行;
}
案例:
var a="90";
switch(a){
case"90":
window.alert("90");
break;
case890:
window.alert("890");
break;
default:
window.alert("没有匹配的值");
}
针对这个案例我们总结出:
▪js的switch语句数据类型可以是js支持的任何类型(数组和对象除外)
▪case后面的数据类型可以任意(数组和对象除外)
▪break作用是跳出整个switch
▪如果没有匹配的,则执行default中的语句。
☞循环控制
◆For循环:for(循环初值;循环条件;步长){ //语句 }
for(var i=0;i<10;i++){
document.writeln("你好!<br/>");
}
流程图:
◆While循环:
while(条件表达式){
//语句
条件变化;
}
◆do..While循环:
不管怎样,循环体肯定会执行一次。
案例练习:
编写一个程序可以接受一个数:
1计算1+2+3+…+n的值。 2计算1!+2!+…+n!的值。
<html>
<head>
<script language="javascript">
var n = window.prompt("请输入一个整数");
n= parseInt(n);
var res=0;
for(var i = 1;i<=n;i++){
res+=i;
}
document.writeln("相加结果是"+res);
var res2 =0;
var temp = 1;
for(var i=1;i<=n;i++){
for(var j =1;j<=i;j++){
temp*=j;
}
res2 +=temp;
temp =1;
}
document.writeln("阶乘相加结果是"+res2);
</script>
</head>
<body>
</body>
</html>
运行结果:
☞IE8开始提供了开发人员工具,供调试javascript代码使用。
案例练习:
输出菱形:
代码如下:
<html>
<head>
<script language="javascript">
for(var i=0;i<10;i++){
for(var j=0;j<9-i;j++){
document.writeln(" ");
}
for(var j =0;j<2*i+1;j++){
document.writeln(" *");
}
document.writeln("<br/>")
}
for(var i = 0;i<9;i++){
for(var j=0;j<i+1;j++){
document.writeln(" ");
}
for(var j =0;j<17-2*i;j++){
document.writeln(" *");
}
document.writeln("<br/>")
}
</script>
</head>
<body>
</body>
</html>