• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
繁星
不要浪费时间
博客园    首页    新随笔    联系   管理    订阅  订阅

[翻译]javascript学习笔记 (一)-函数基础

正则表达式验证表单
function validateForm(){
    
var email = document.forms.tutform.elements.email.value;
    
if(!(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/.test(email))){
        alert('Please enter a valid e
-mail address');
        
return false;
    }
    
return true;
}


定义一个函数,需要前三个参数,其余7个是可选的
function myFunction(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10){
    
// do stuff with arg1
    // do stuff with arg2
    // do stuff with arg3
    if(arg4){
        
// do stuff with arg4
    }
    
if(arg5 && arg6 && arg7){
        
// do stuff with arg5, arg6 and arg7
        if(arg8){
            
// do stuff with arg8
        }
    }
    
if(arg9 || arg10){
        
// do stuff with arg9 or arg10
    }
}

如果参数没有传值则为"undefine",这代表对象不存在。在判断语句中,系统可以把它转换为布尔值"false"。

函数参数中可以传递函数
<script type="text/javascript">
function multiply(){
    
var out=1;
    
for(var i=0; i<arguments.length; i++){
        out 
*= arguments[i];
    }

    
return out;
}

function add(){
    
var out=0;
    
for(var i=0; i<arguments.length; i++){
        out 
+= arguments[i];
    }

    
return out;
}

function doAction(action){
    alert(action(
1, 2, 3, 4, 5));
}

</script>

<button onclick="doAction(multiply)">Test Multiply</button>
<button onclick="doAction(add)"     >Test Add</button>



若你不清楚函数有多少个参数,可以使用function内置的"arguments"对象,它存在与每个函数里面。
function myFunction(){
    
for(var i=0; i<arguments.length; i++){
        alert(arguments[i].value);
    }
}

函数中可以包含函数,这为实现js的仿OO提供了基础。
function myFunction(){
    
function nestedFunction1(arg1, arg2, arg3){
        alert(arg1
+arg2+arg3);
    }

    
var nestedFunction2 = function(arg1, arg2, arg3){
        alert(arg1
+arg2+arg3);
    }

    
var nestedFunction3 = new Function('arg1, arg2, arg3', 'alert(arg1+arg2+arg3);');
}

函数定义有很多种,第三中定义方式很少用,但是很有用。你可以使用字符串定义函数。

字符串
转义字符 \
var n = "The dog took it's bone outside";
var n = 'The dog took it\'s bone outside';

两者的效果是一样的
常用字符串函数
IndexOf 返回包含指定字符串在另外一个字符串第一次出现的位置,如果不存在则返回-1
lastIndexOf  返回包含指定字符串在另外一个字符串最后一次出现的位置,如果不存在则返回-1
charAt 字符串中指定位置的字符值
substring 获取字符串两个索引间的值
substr 功能和substring类似 第二个参数获取的是所需字符串的长度
例如
alert('This is a Test'.indexOf('T'));     //  0
alert('This is a Test'.lastIndexOf('T')); //  10
alert('This is a Test'.charAt(5));        //  i
alert('This is a Test'.length);           //  14
alert('This is a Test'.substring(5, 9));  //  is a
alert('This is a Test'.substr(5, 9));     //  is a Test
alert('This is a Test'.toUpperCase());    //  THIS IS A TEST
alert('This is a Test'.toLowerCase());    //  this is a test


eval 将传入的字符串作为javascript代码执行
eval("alert('Hello, World!')");


数字
NaN 代表 "not a number"
常用函数
parseInt ,parseFloat,toString

数组
两种定义数组的方式
var students = new Array();

students[
0] = 'Sam';
students[
1] = 'Joe';
students[
2] = 'Sue';
students[
3] = 'Beth';

var students = ['Sam', 'Joe', 'Sue', 'Beth'];


数组的每个项可以包含任何类型的其他项,如字符串,数字,对象,函数,甚至数组.
var spreadsheet = [
    ['A1', 'B1', 'C1', 'D1'],
    ['A2', 'B2', 'C2', 'D2'],
    ['A3', 'B3', 'C3', 'D3'],
    ['A4', 'B4', 'C4', 'D4']
];

通过如下代码访问
var col2 = spreadsheet[1];
alert(col2[
2]);
// or
alert(spreadsheet[1][2]);


在数组的末尾加入一个新的项
var students = ['Sam', 'Joe', 'Sue', 'Beth'];

students[
4]               = 'Mike';
students[students.length] 
= 'Sarah';
students.push('Steve');

// we now have an array with 7 elements: ['Sam', 'Joe', 'Sue', 'Beth', 'Mike', 'Sarah', 'Steve']


splice函数的作用很大 可以用来任意添加或删除数组元素 下面示例用来添加和删除数组项.splice接收了两个参数:起始索引,移除项的数目 .
var students  = ['Sam', 'Joe', 'Sue', 'Beth'];

function addStudent(name){
    students.push(name);
}

function removeStudent(name){
    
for(var i=0; i<students.length; i++){
        
if(students[i].toLowerCase() == name){
            students.splice(i, 
1);
            
break;
        }
    }
}


我们经常需要将数组转为字符串或字符串转为数组
提供了两个函数
join:将数组转为字符串 每个项之间用一个字符串连接起来
split:将字符串转为数组
var myString = 'apples are good for your health';

var myArray = myString.split('a');    // we break myString apart on every 'a' found.
alert(myArray.join(', '));          // we join myArray back together with a comma so you can see each item
alert(myArray.join('a'));           // now we join myArray back together with an 'a' so we get our original string back

还有两个有用的数组函数
pop:移除最后项且返回该项
shift:移除起始项且返回该项
var students  = ['Sam', 'Joe', 'Sue', 'Beth'];

while(students.length>0){
    alert(students.pop());
}

这样数组会清空,还有一种更简洁的清空数组方式
students.length = 0


for语句
var students = ['Sam', 'Joe', 'Sue', 'Beth'];

students['Sam']  
= 90;
students['Joe']  
= 85;
students['Sue']  
= 94;
students['Beth'] 
= 82;

alert('There are '
+(students.length)+' students: '+students.join(', '));
for(var i=0; i<students.length; i++){
    alert(students[i]
+"'s grade is: "+students[students[i]]);
}

for in语句实现相同的功能
var grades = [];

grades['Sam']  
= 90;
grades['Joe']  
= 85;
grades['Sue']  
= 94;
grades['Beth'] 
= 82;

for(student in grades){
    alert(student 
+ "'s grade is: " + grades[student]);
}
posted @ 2009-03-01 12:53  ※繁星※  阅读(168)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3