js函数
2015-10-20 21:50
801 查看
函数
1.定义方式
1)声明式:
function text(x,y) {
return x+y;
}
//声明式已定义,解析时优先执行
2)表达式:
var text = function (x,y) {
return x+y;
};
//解析时先解析变量名,后执行赋值
3)对象式:
var text = new Function("x","y","return x+y");
//调用方式:变量名();
2.立即调用的函数
//匿名函数,只能应用一次,两种定义方式
1)(function (x,y) {
return x + y;
})(1,2)
2)(function (x,y) {
return x + y;
}(1,2))
3.作用域
var a = 1;
var b = 2;
function fn(){
var b = 3;
console.log(b); //输出3
fn1();
function fn1() {
console.log("inner"); //输出inner
}
console.log("inner "+b); //输出inner 3
}
console.log("outer "+b); //输出2
fn();
//全局变量作用于整个script,而局部变量只能作用于定义该变量的函数体,二者同名时,局部变量在自己的势力范围内会覆盖全局变量。
4. 解析
function fn(){
console.log(1);
}
var fn = function(){
console.log(2);
} ;
fn();
//运行结果为2,一个声明式,一个表达式,二者重名时,声明式在由于已经定义,在解析时就开始执行函数体内部的语句,而表达式先解析变量名,后进行赋值,将覆盖声明式的输出结果。
5.作用域案例
var a = 1;
var fn = function() {
console.log(a);
};
function fn1() {
var a = 2;
fn();
}
fn1();
//运行结果为1,函数体内部的变量,在声明时就已经确定了它的作用域
6.传值参数
var x = 1, y = 2;
function fn(x,y) {
x = 2;
y = 3;
}
fn(x,y);
console.log(x+""+y)
//输出结果为12,针对原始数据类型,将其值传递
7.传址参数
var arr = [1,2,3];
function fn(arr) {
arr[0] = 4;
arr[1] = 5;
arr[2] = 6;
}
fn(arr);
console.log(arr)
//运行结果为[4,5,6]
var arr = [1,2,3];
function fn(arr) {
arr = [4,5,6];
}
fn(arr);
console.log(arr)
//运行结果为[1,2,3]
//数组名保存为栈,且为第一个元素的地址,内部元素保存以堆的形式。针对引用类型,为址传递。
1.定义方式
1)声明式:
function text(x,y) {
return x+y;
}
//声明式已定义,解析时优先执行
2)表达式:
var text = function (x,y) {
return x+y;
};
//解析时先解析变量名,后执行赋值
3)对象式:
var text = new Function("x","y","return x+y");
//调用方式:变量名();
2.立即调用的函数
//匿名函数,只能应用一次,两种定义方式
1)(function (x,y) {
return x + y;
})(1,2)
2)(function (x,y) {
return x + y;
}(1,2))
3.作用域
var a = 1;
var b = 2;
function fn(){
var b = 3;
console.log(b); //输出3
fn1();
function fn1() {
console.log("inner"); //输出inner
}
console.log("inner "+b); //输出inner 3
}
console.log("outer "+b); //输出2
fn();
//全局变量作用于整个script,而局部变量只能作用于定义该变量的函数体,二者同名时,局部变量在自己的势力范围内会覆盖全局变量。
4. 解析
function fn(){
console.log(1);
}
var fn = function(){
console.log(2);
} ;
fn();
//运行结果为2,一个声明式,一个表达式,二者重名时,声明式在由于已经定义,在解析时就开始执行函数体内部的语句,而表达式先解析变量名,后进行赋值,将覆盖声明式的输出结果。
5.作用域案例
var a = 1;
var fn = function() {
console.log(a);
};
function fn1() {
var a = 2;
fn();
}
fn1();
//运行结果为1,函数体内部的变量,在声明时就已经确定了它的作用域
6.传值参数
var x = 1, y = 2;
function fn(x,y) {
x = 2;
y = 3;
}
fn(x,y);
console.log(x+""+y)
//输出结果为12,针对原始数据类型,将其值传递
7.传址参数
var arr = [1,2,3];
function fn(arr) {
arr[0] = 4;
arr[1] = 5;
arr[2] = 6;
}
fn(arr);
console.log(arr)
//运行结果为[4,5,6]
var arr = [1,2,3];
function fn(arr) {
arr = [4,5,6];
}
fn(arr);
console.log(arr)
//运行结果为[1,2,3]
//数组名保存为栈,且为第一个元素的地址,内部元素保存以堆的形式。针对引用类型,为址传递。
相关文章推荐
- JavaScript学习随记——数组二
- JSP的9大内置对象及4个作用域
- js小妙用
- 你不知道的JavaScript--Item12 undefined 与 null
- 你不知道的JavaScript--Item12 undefined 与 null
- Extjs之PagingToolbar
- JavaScript arguments对象
- artTemplate -- 性能卓越的 js 模板引擎
- [工作]重复性工作(未完)
- JavaScript基础学习笔记
- JS模块化历程
- Javascript模块化编程
- JS 之性能优化(2)
- 无缝滚动,JavaScript
- Jsp中三种注释
- Extjs之RowNumberer
- JS事件
- js的基础类型与引用类型
- [Servlet]Servlet/JSP Web应用配置
- Javascript和HTML dom