爱易网
IT新闻
IT新闻
爱易资讯
网站搭建
云虚拟主机教程
云服务器教程
Apache教程
IIS教程
Nginx教程
网站策划
站长文章
推广教程
淘宝客教程
网页设计
HTML教程
XHTML教程
CSS教程
HTML5教程
CSS3教程
JavaSript基础
JQuery教程
Node.js教程
前端技术
Ajax教程
Js特效
Xml教程
平面设计
页面UI设计
photoshop教程
程序开发
AI人工智能
Asp教程
Php教程
Asp.Net教程
Net Core教程
C#教程
Java教程
Jsp教程
开发技术
微信小程序教程
Uniapp开发教程
微信公众号开发
Andriod教程
IOS教程
DOS教程
Python教程
Docker教程
Windows Container教程
数据库
MSSQL教程
MySQL教程
Redis教程
Access教程
Oracle教程
数据库教程
操作系统
Linux教程
Windows教程
MAC教程
Cisco教程
交换机教程
防火墙教程
搜索
爱易网页
JavaSript
{{JS}}function话语
{{JS}}function话语
日期:2014-05-16 浏览次数:20490 次
{{JS}}function语句
请问以下语句输出结果是:
alert(f(4));
var f = 0;
function f(x) {
return x + 1;
}
alert(f);
答案是:
// 5
// 0
这里需要解释下原因——出现这种结果的原因是由于函数定义和变量定义发生在不同的时刻.
在JS中函数定义发生在解析时,而不是在运行时.
当JS解析程序遇到一个函数定义时它就会解析并存储(而无需执行)构成函数主体的语句,然后定义一个和该函数同名的属性(如果函数定义嵌套在其它函数中,那么就会在调用对象中定义这个属性,否则在全局对象中定义这个属性)以保存它.
如上说法,你就能明白为什么JS中强调函数定义不能出现在if/while或其它语句中,如下
if(a === 1) {
function get(param) {
return param + 1;
}
} else {
function get(param) {
return param + 2;
}
}
由于函数定义发生在解析时,故get函数始终为第二个.
上一篇: ssh如何知道删除实体成不成功
下一篇: {{JS}}相仿数组的对象
免责声明:
本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
相关资料
更多>
Android中对json的解析跟处理
S2SH+jQuery+JSON+Ajax登记-异步校验
JS修改form.action的有关问题
在myeclipse中怎么搭配extjs的开发环境
split( /\s+/);什么意思解决办法
关于 js 传值 输出 HTML解决思路
页面相仿数组的数据,封装成Json格式,且后台解析,
JSF入门2(JSF的几个实现与框架)
extJs 2.0学习札记(DomHelper.js篇)
推荐阅读
更多>
javascript操作cookie能够沿用下次的设置或在不同的页面间共享数据
Javascript js 返回下一页 js返回下一页
JavaScript闭包是什么?该怎么解决
js 惯用方法
Express.js 汉语言入门指引手册
转:JS控制只能输入数字跟小数点
html嵌套JavaScript应用循环输出5行10列,最后得出的.html文件不能显示想要的结果
$.post返回页面带有<script>标签的div元素解析,拿不到<script>标签解决方法
js的极晚绑定机制?该怎么解决
Javascript校验身份证以及对应的性别跟出生日期
eclipse解决jsp页面乱码有关问题
JS 绘图种(纯DIV绘图)
jquery的选择器有关问题
Firefox中XMLHttpRequest返回结果在异常控制台报-语法异常
:setTimeout无效
JavaScript编程风格解决思路
js证验密码必须为大小写字母和数字组成
JavaScript总结(一)
求网站惯用JS特效展示或代码!
JS在firefox下导出EXCEL或csv或其他格式文件,该如何解决