JavaScript函数使用要点
来源:互联网 发布:仿小米商城源码 编辑:程序博客网 时间:2024/06/01 21:04
JavaScript函数使用要点
arguments对象
arguments对象与数组类似,可以使用方括号语法访问
function doAdd() { if (arguments.length == 1) { console.log(arguments[0]); } else if (arguments.length == 2) { console.log(arguments[0] + arguments[1]); }}doAdd(10);//10doAdd(10, 20);//30
arguments对象的值与命名参数同步
function doAdd(num1, num2) { arguments[1] = 10; console.log(arguments[0] + num2);}doAdd(6, 7);//16
arguments.callee和function.caller
arguments.callee指向当前函数
function.caller为调用当前函数的函数的引用
function outer(){ inner();}function inner(){ console.log(arguments.callee.caller);}outer();//[function: outer]
没有重载
同名函数只有最后一个生效
function addSomeNumber(num) { return num + 100;}function addSomeNumber(num1, num2) { return num1 + 200;}console.log(addSomeNumber(100)); //300console.log(addSomeNumber(100, 200)); //300
Function类型
函数声明与函数表达式
函数声明
function sum(num1, num2) { return num1 + num2;}
函数表达式
var sum = function(num1, num2) { return num1 + num2;}
函数声明可以在代码执行时提升到顶部,而函数表达式这样用会报错
console.log(sum(1, 2));//3function sum(num1, num2) { return num1 + num2;}
访问函数指针与函数调用
函数名为指向函数体的指针,函数名后加上括号可调用函数
function sum(num1, num2) { return num1 + num2;}console.log(sum(1, 2));//3var anotherSum = sum;console.log(anotherSum(1, 2));//3sum = null;console.log(anotherSum(1, 2));//3
函数作为参数
函数可以作为参数来传递
例:json数组排序
function createComparisonFunction(propertyName) {//接收属性名 return function(object1, object2) { var value1 = object1[propertyName]; var value2 = object2[propertyName]; //制定比较规则 if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0; } }}//测试var array = [{ 'name': '小明', 'value': 3}, { 'name': '小红', 'value': 1}, { 'name': '小宝', 'value': 2}, { 'name': '小刚', 'value': 0}];array.sort(createComparisonFunction("value"));console.log(array);// [ { name: '小刚', value: 0 },// { name: '小红', value: 1 },// { name: '小宝', value: 2 },// { name: '小明', value: 3 } ]
apply()和call()
语法:
apply(作用域,参数数组);
call(作用域,参数1,参数2,…);
这两个函数能够扩充函数赖以运行的作用域
color = "red";var o = { color: "blue"};function sayColor() { console.log(this.color);}sayColor();//redsayColor.call(o);//blue
作用域
没有块级作用域
for (var i = 0; i < 10; i++) { //doSomething}console.log(i); //10
函数环境
使用var声明的变量会自动添加到最近的环境中,函数内部声明的变量在外界无法直接访问
function add(num1, num2) { var sum = num1 + num2; return sum;}var result = add(10, 20);//30console.log(result);console.log(sum);//报错
函数表达式
递归
使用arguments.callee实现递归
function factorial(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num - 1); }}console.log(factorial(4));//24
阅读全文
0 0
- JavaScript函数使用要点
- javascript对象、函数要点总结
- getchar()函数使用要点
- 详解JavaScript中localStorage使用要点
- 详解JavaScript中localStorage使用要点
- 详解JavaScript中localStorage使用要点
- javascript要点
- JavaScript要点
- MsgWaitForMultipleObjects函数的使用要点 ----- 转
- 函数要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- 深浅拷贝
- mybatis call stored procedure(MyBatis 调用存储过程)
- 【勤哲应用】用Excel服务器做银行综合管理系统
- HDU2048 神、上帝以及老天爷(错排)
- ABAP小写金额转大写
- JavaScript函数使用要点
- Android 风格
- linux mknode命令
- Mysql数据库中将cmf_videos表中covers字段中的//video替换为/video
- 解决eclipse中tomcat提示404问题
- Linux ixgbe网卡(光模块)兼容性问题
- 函数调用约定和堆栈
- linux下自由切换默然编译选择python2还是python3的方法
- Linux内核模块编程与内核模块LICENSE