js函数
来源:互联网 发布:出货数据怎么做模板 编辑:程序博客网 时间:2024/05/17 07:25
函数
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]
//数组名保存为栈,且为第一个元素的地址,内部元素保存以堆的形式。针对引用类型,为址传递。
0 0
- JS 函数
- js 函数
- js 函数
- js 函数
- JS函数
- js函数
- js函数
- js函数
- JS函数
- js函数
- js 函数
- js函数
- JS函数
- js函数
- js 函数
- js函数
- js-函数
- js 函数
- 数据库事务四种隔离级别
- Oracle pl/sql编程 16---游标变量使用游标更新数据库
- linux常用命令
- Disruptor并发框架
- C++笔试面试遇到的问题
- js函数
- select结合curl处理多个handle
- [BZOJ1620][Usaco2008 Nov]Time Management 时间管理
- Android自定义View
- Linux grep命令正则表达式的常见用法
- Atom编辑器折腾记_(17)atom-minify[CSS/JS压缩神器]
- 链表各类操作详解
- 处理git pull 冲突
- Linux监控网络流量和限制网卡速率