Javascript基础2
流程控制
if判断
- 语法结构1
if( 条件表达式,结果是true或false )
{
//条件为true时,执行的代码
}
- 语法结构2
if( 条件表达式 )
{
//条件为true时,执行的代码
}else
{
//条件为false时,执行的代码
}
- 语法结构3
if(条件1)
{
代码1;
}else if(条件2)
{
代码2;
}else if(条件3)
{
代码3 ;
}else
{
如果以上条件都不满足,则执行;
}
switch分支结构:根据一个变量的不同取值,来执行不同的代码
- 语法结构:
switch(变量)
{
case 值1:
代码1;
break;
case 值2:
代码2;
break;
case 值3:
代码3;
break;
default:
如果上边的条件都不满足,则执行;
}
两个关键字break和continue
- break:在循环、switch里边有使用 跳出当前的本层循环
- continue:在循环里边使用 跳出本次循环,进入下次循环
循环
- while循环
while 语句是先测试循环。这意味着退出条件是在执行循环内部的代码之前计算的。因此,循环主体可能根本不被执行。
var i = 0; //变量初始化,定义变量并赋值
while(i<10)
{
document.write(i);
i++;//要有退出循环的条件
}
- do while循环
do-while 语句是后测试循环,即退出条件在执行循环内部的代码之后计算。这意味着在计算表达式之前,至少会执行循环主体一次。
var i = 0;
do {i += 2;} while (i < 10);
- for循环
iCount = 6;
for (var i = 0; i < iCount; i++) {
alert(i);
}
for in语句
for 语句是严格的迭代语句,用于枚举对象的属性或者遍历一个数组的元素
var arrs=["aa","bb","cc"];
for (var i in arrs){
alert(str[i])
}
With语句
wth语句的作用: 有了 With 语句,在存取对象属性和方法时就不用重复指定参考对象。
with(obj){
操作obj的属性语句;
}
<script type="text/javascript">
<!—
with(document){
write("您好 !");
write("<br>这个文档的标题是 : \"" + title + "\".");
write("<br>这个文档的 URL 是: " + URL);
write("<br>现在您不用每次都写出 document 对象的前缀了 !");
}
// -->
</script>
函数
函数是:有一定功能代码体的集合。
函数创建
- 传统方式
function 函数名(){}
该方式的函数有“预加载”过程,允许我们先调用函数、再声明函数 预加载:代码先把函数的声明放入内存。代码开起来是先调用、后声明,本质是先声明、后调用的。
注意:函数先调用、后声明的条件是,全部代码在一个”<script>”标记里边。
<script type="text/javscript">
getInfo()
function getInfo(){
console.log("hello");
}
</script>
- 变量赋值方式声明函数(匿名函数使用)
var 函数名 = function(){}
该方式没有“预加载”,必须先声明、后调用。
<script type="text/javscript">
var getName=function (){
console.log("tom");
}
getName();
</script>
- 参数
在javascript中参数没有严格的限制,实参和形参没有严格的对照关系
<script type="text/javscript">
function getInfo(name,age,address){
console.log("name"+name+"age"+age+"address"+address);
}
getInfo("tom");
getInfo("tom",12);
getInfo("tom",12,"xxx");
</script>
- 关键字arguments(类似Java里面的可变参数)
这是一个参数数组
Javascript语法上并不支持重载,但是此方法可以实现模拟重载
<script type="text/javscript">
function getInfo(){
var length=arguments.length;
if(length==0){
console.log("个人信息");
}else if(length==1){
console.log("个人信息:名字"+arguments[0])
}else if(length==2){
console.log("个人信息:名字"+arguments[0]+"年龄"+arguments[1])
}else if(length==3){
console.log("个人信息:名字"+arguments[0]+"年龄"+arguments[1]+"地址"+arguments[2])
}
}
getInfo()
getInfo("tom");
getInfo("tom",12);
getInfo("tom",12,"xxx");
</script>
- callee关键字
意思:在函数内部使用,代表当前函数的引用。
function f1(){
xxxx具体执行代码
arguments.callee(); //调用本函数(或者f1())
//都可以使得本函数执行,我们选择callee,其可以降低代码的耦合度。
xxxx执行代码
}
- 函数返回值
一个函数执行完毕需要返回具体的信息,使用return关键字返回信息。 在一定层度上看,全部的数据类型(数值、字符串、布尔、对象、null)信息都可以返回 return本身还可以结束函数的执行。
在函数内部返回一个函数出来。 在javascript里边,一切都是对象 在一个函数内部,可以声明数值、字符串、布尔、对象等局部变量信息,言外之意就还可以声明函数(函数内部还要嵌套函数),因为函数是对象,并且函数可以被return给返回出来。
- 函数调用
传统调用
函数名();
匿名函数自调用
(function(){})();
- 全局/局部变量
全局变量
① 在函数外部声明的变量
② 函数内部不使用“var”声明的变量(函数调用之后起作用)
局部变量
在函数内部声明的变量,变量前边有”var“关键字。
- 总结
- 使用function关键字定义函数。
- 没有任何的返回值类型。
- 函数的定义优先执行,与顺序无关。(传统模式定义的函数)
- 可以通过函数名赋值函数,函数变量的类型是function对象。
- 参数列表不能有var关键字。
- 函数的参数列表在具体调用的时候实参个数可以和形参个数不同。
- JavaScript函数天然的支持可变参数。
- 同名的函数最后声明会覆盖前面以声明。Javascript中没有函数重载。
面向对象
基本数据类型的包装对象
- String
- Number
- Boolean
Math类
Math工具类中的方法
max()
min()
random()
...更多请看文档
Date对象
function showDate() {
//获取系统时间
var date = new Date();
//获取年 月 日时分秒
var str = date.getFullYear() + "年" + (date.getMonth() + 1) + "月" + date.getDate() + "日" + "星期" + date.getDay() + " " + date.getHours() + "时" + date.getMinutes() + "分" + date.getMinutes() + "分" + date.getSeconds() + "秒"
//将格式化好的时间显示在叶面的span标签体中
var span = document.getElementById("mydate");
//给span标签设置标签体内容
span.innerHTML = str.fontcolor("red");
//调用定时函数
window.setTimeout("showDate()", 1000);
}
//调用函数
showDate();
数组
- 创建数组有两种方式
- 第一种是使用Array的构造函数var arrs=new Array();
- 第二种方式 var arrs=["aa","bb","cc"];
//数组的声明和初始化,注意:数组的长度取决于整数下标的个数
var arr = new Array();
arr[0] = "aa";2
arr[1] = "bb";
arr[6] = 'xx';
document.write(arr + "<br/>");
//遍历数组
for (var i = 0; i < arr.length; i++) {
document.write(arr[i]+"<br/>");
}
//下标越界时:
var arr = ["aa", "bb"];
document.write(arr[200]);
// 显示undefined
- array常用方法
sort()
对当前数组进行排序,并返回已经进行了排序的此Array对象。
不会创建新对象,是在指定数组中直接进行排序。
reverse()
对当前数组进行反转排序,返回一个元素顺序被反转的 Array 对象。
不会创建新对象,是在指定数组中直接进行排序。
push( [item1 [item2 [. . . [itemN ]]]] )
将以新元素出现的顺序添加这些元素。
如果参数之一为数组,那么该数组将作为单个元素添加到数组中。
pop()
移除数组中的最后一个元素并返回该元素。
如果该数组为空,那么将返回 undefined。
shift()
移除数组中的第一个元素并返回该元素。
如果该数组为空,那么将返回 undefined。
unshift([item1[, item2 [, . . . [, itemN]]]])
将指定的元素插入数组开始位置并返回该数组。
splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
移除从 start 位置开始的指定个数的元素,并插入新元素,从而修改 concat([item1[, item2[, . . . [, itemN]]]])
返回一个新数组,这个新数组是由两个或更多数组组合而成的。原数组不变。
要加的项目(item1 … itemN)会按照从左到右的顺序添加到数组。
如果某一项为数组,那么添加其内容到 array1 的末尾。
如果该项目不是数组,就将其作为单个的数组元素添加到数组的末尾。
slice(start, [end])
返回一个包含了指定的部分元素的数组。
将返回索引大于等于start且小于end的一段。
原数组不变。
join(separator)
把所有元素由指定的分隔符分隔开来组成一个字符串,返回这个字符串值。
如果数组中有元素没有定义或者为 null,将其作为空字符串处理。