【javascript笔记】声明函数的三种方式<二>
2014-10-27 22:30
393 查看
最近 在看js书籍,记录了一下:
通常我们使用的是 使用函数声明语法定义:
但是我们偶尔也会这样 用函数表达式 定义函数:
两种方式有什么区别呢,其实区别不是很大 ,实际上js里面 函数也是对象。
下面引用一个例子:
还有一种不推荐的定义函数的方式, var sum =new Function('arg1','arg2','return arg1+arg2') ; 这种语法会导致解析两次 代码,请自行忽略
函数声明和 表达式 的明显区别 是解析器在执行环境加载数据的时候会先读取函数声明 也就是 function sum(arg1,arg2) 这种声方式,并且让其在执行任何代码之前可以使用(可以执行);
//函数声明 和表达式 这样混用是可以的 但是 请注意 safari中 这样是会报错
var sum=function sum(arg1,arg2){
return arg1+arg2;
}
若我们想访问函数的指针 而不是去 执行函数 就不加上括号(当然包括里面的参数):
http://www.cnblogs.com/haogj/p/3293592.html
通常我们使用的是 使用函数声明语法定义:
function functionName(arg1,arg2){ //to-do }
但是我们偶尔也会这样 用函数表达式 定义函数:
var sum =function(arg1,arg2){ //to-do }
两种方式有什么区别呢,其实区别不是很大 ,实际上js里面 函数也是对象。
下面引用一个例子:
function sum(arg1,arg2){ return arg1+arg2; } alert(sum(10,10));//输出20 var anotherSum=sum;//实际上传递的只是一个引用 alert( anotherSum(10,10));//输出20 sum=null; alert(anotherSum(10,10));// 仍然输出的20 由于sum现在指向的是一个空引用 但是 新的变量anotherSum指向了 function对象
还有一种不推荐的定义函数的方式, var sum =new Function('arg1','arg2','return arg1+arg2') ; 这种语法会导致解析两次 代码,请自行忽略
函数声明和 表达式 的明显区别 是解析器在执行环境加载数据的时候会先读取函数声明 也就是 function sum(arg1,arg2) 这种声方式,并且让其在执行任何代码之前可以使用(可以执行);
//下面的代码不会报错 alert(sum(10,10)); function sum(arg1,arg2){ return arg1+arg2; } //但是改为这样 alert(sum(10,10)); var sum=function (arg1,arg2){ return arg1+arg2; } //会再第一句出报错
//函数声明 和表达式 这样混用是可以的 但是 请注意 safari中 这样是会报错
var sum=function sum(arg1,arg2){
return arg1+arg2;
}
若我们想访问函数的指针 而不是去 执行函数 就不加上括号(当然包括里面的参数):
http://www.cnblogs.com/haogj/p/3293592.html
相关文章推荐
- 【javascript笔记】关于函数的构造函数和prototype<四>
- 【javascript笔记】声明函数的三种方式
- 从零开始学_JavaScript_系列(20)——js系列<7>(函数原型的两种声明方式、函数的作用域)
- 【javascript笔记】 函数内部属性以及方法<三>
- PostgreSQL学习笔记6之函数和操作符<二>
- 【Java编程】Java学习笔记<二>
- Java笔记1 Java编程基础<2>循环语句、函数(重载)、变量和数组的内存结构
- Windows学习笔记4——窗口与消息<二>
- Windows学习笔记8——文字输出<二>
- javascript 函数声明的三种方式
- <<javascript 高效图形编程>>笔记
- Opencv2 学习笔记<一>:cv::Mat数据访问方式
- <<c++ primer>> 函数指针的笔记
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<javascript>(三十)
- JavaScript<二>_css
- D3.JS 基于javascript的图表展示库<二>----基本元素操作
- Javascript Math 中常用函数<一>--ceil(),floor(),round()
- Windows学习笔记10——图形基础<二>
- error C2244: “QMultiMap<Key,T>::insert”: 无法将函数定义与现有的声明匹配
- Generics Types 泛型学习笔记<二>