JS之函数
来源:互联网 发布:python 签到脚本 编辑:程序博客网 时间:2024/06/06 19:45
函数的作用是,可以写一次代码,然后反复地重用这个代码。
function add2(a,b){sum = a + b; alert(sum);} // 只需写一次就可以add2(3,2);add2(7,8);.... //只需调用函数就可以
常见函数:
String
Number
Date
Array
数据类型转换总结:
定义函数
function 函数名( )
{
函数体;
}
特点:
不需要申明返回值类型
可以有也可以没有返回值
返回值可以为任何类型
带参数的方法:function f(a, b){}f(2,"abc");//undefinedfunction f(a, b){ return a+b;}s = f(2,"abc");//"2abc"
作用域
f();//位置①可以function f(){ alert("f");}f();//位置②可以t();//位置①不可以var t = function(){ alert("t"); }t();//位置②可以二者的区别在于作用域的不同!
函数可传递性
var f1 = function(){}var f2 = f1;f2();
函数中的arguments对象
1、在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。
<script type="text/javascript"> Array.prototype.testArg="test"; // object.prototype.name=value,prototype属性使得Array有能力给对象添加了一个自定义属性testArg,如果arguments是Array的实例那么它就能调用这个自定义属性 function funcArg(){ alert(funcArg.arguments.testArg); //输出:"undefined"说明arguments并不是Array对象的一个实例 alert(funcArg.arguments[0]); //输出10,注意funcArg()并没有形式参数接收下面funcArg(10)传递过来的实参,但是funcArg.arguments[0]还是输出了传递过来的实参的值, //所以说明arguments是由实参决定并影响的。 } alert(new Array().testArg); //输出test funcArg(10); //输出:"undefined",10</script>
2、arguments对象的长度是由实参个数而不是形参个数决定的。形参是函数内部重新开辟内存空间存储的变量,但是其与arguments对象内存空间并不重叠。对于arguments和值都存在的情况下,两者值是同步的,但是针对其中一个无值的情况下,对于此无值的情形值不会得以同步。
function f(a, b, c){ alert(arguments.length); // result: "2" a = 100; alert(arguments[0]); // result: "100" arguments[0] = "qqyumidi"; alert(a); // result: "qqyumidi" alert(c); // result: "undefined" c = 2012; alert(arguments[2]); // result: "undefined" } f(1, 2);
3、
第一:Javascript函数的声明是没有返回值类型这一说法的;
第二:JavaScript中形参的个数严格意义上来讲只是为了方便在函数中的变量操作,实际上实参已经存储在arguments对象中了;
第三:由JavaScript中函数的声明和调用特性,可以看出JavaScript中函数是不能重载的。
4、arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。
function count(a){ if(a==1){ return 1; } return a + arguments.callee(--a);} var mm = count(10); alert(mm);//55
String
常用方法:
substring(start, end);
charAt(number); //返回的是字符串,不是字符
indexOf(number);
charCodeAt(number);//将指定位置字符串转换为Unicode编码;
String中的转义字符
字符串到数字的转换
parseInt(“3 string micc”);//返回数字3
parseFloat(“3.14 tostri”);//返回3.14
parseInt(“12.2”);//返回12
parseInt(“077”,8);//8进制转换成10进制,返回63=7*8+7
parseInt(“077”);//返回77
parseInt(“0XFF”);//返回255,十六进制
parseInt(“11”,2);//2进制转换成10进制,返回 3= 1*2+1
parseInt(“bbb”);//返回NaN
其他进制转换成十进制
parseInt(numstring, [radix])
numstring 必选项。要转换为数字的字符串。
radix 可选项。在 2 和 36 之间的表示 numstring 所保存数字的进制的值。如果没有提供,则前缀为 ‘0x’ 的字符串被当作十六进制,前缀为 ‘0’ 的字符串被当作八进制。所有其它字符串都被当作是十进制的。
parseInt(077);//63parseInt(12, 8);//10parseInt("a", 16);//10parseInt(0XFF);//255
十进制转换成其他进制
objectname.toString([radix])
objectname 必选项。要得到字符串表示的对象。
radix 可选项。指定将数字值转换为字符串时的进制。
例如:
var m = 10;
parseInt(m.toString(2)) ; // 先是” 1010”,然后转换成1010
parseInt(m.toString(8)); // 先是 “12 ” ,然后转换成12
parseInt(m.toString(10)); // 先是 “10 ” ,然后转换成10
parseInt(m.toString(16) );//先是 “a” ,然后是NaN
Number
数字转换为字符串表示
var x = 10;
x.toString(2);
x.toString(8);
x.toString(n); //n表示将数字以什么进制表示
Date
var now = new Date();now.getFullYear()+"年";(now.getMonth()+1)+"月";now.getDate()+"日";now.getHours()+"时";now.getMinutes()+"分";now.getSeconds()+"秒";now.getTime();//返回距 1970 年 1 月 1 日之间的毫秒数
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>定义函数</title><script type="text/javascript">function sub2() //定义函数 { sub=5-2; alert("5和2的差:"+sub); }</script></head><body><form> <input type="button" value="点击我" onclick="sub2()" /></form></body></html>
有参数的函数
function 函数名(参数1,参数2)
{
函数代码
}
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>函数传参</title><script type="text/JavaScript"> function add(x,y,z) { sum = x + y +z; document.write(x+"、"+y+"、"+z+"和:"+sum+"<br/>"); } add(5,8,3); add(7,1,4);</script></head><body></body></html>
返回值的函数
function add2(x,y){ sum = x + y; return sum; //返回函数值,return后面的值叫做返回值。}
- js复习之-函数
- js之函数
- js之匿名函数
- js之匿名函数
- js之匿名函数
- js之惰性函数
- JS之函数相关
- js之工具函数
- JS之map函数
- JS之函数理解
- JS之构造函数
- js之特殊函数
- JS之匿名函数
- js之初识函数
- JS之函数
- JS基础学习之 -- 函数
- js学习之parseInt()函数
- JS 之 日期格式化函数
- Logistic回归分类中的梯度上升法
- 160个练手CrackMe-042
- IT风投的一声叹息
- JS 中 ++i 和i++的区别
- 2017-12-20
- JS之函数
- 数据结构实验之排序二:交换排序
- Java设计模式之访问者模式
- 期末复习JAVA 闰年判断
- BZOJ 4736/UOJ #274. 【清华集训2016】温暖会指引我们前行 LCT边权操作
- 160个练手CrackMe-043
- angular查询
- HDOJ 2027 统计元音
- SLAM算法-----几种2D-slam算法比较