返回信息流var a=0,b=0;
function A(a){
A=function(b){
alert(a+b++);
}
alert(a++);
}
A(1);
A(2);
这是一条镜像帖。来源:北邮人论坛 / www-technology / #37556同步于 2016/7/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
笔试题求教
qxx196188
2016/7/5镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 qxx196188 的大作中提到: 】
: var a=0,b=0;
: function A(a){
: A=function(b){
: ...................
考察了闭包,再加个运算符优先级. 楼主觉得答案应该是多少?
————
微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送
【 在 e97ace 的大作中提到: 】
: 考察了闭包,再加个运算符优先级. 楼主觉得答案应该是多少?
: ————
: 微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
: ...................
请教,为啥
!function A(a){
A=function(b){
alert(a+b++);
}
alert(a++);
}()
运行后A没有定义,但是
!function(a){
A=function(b){
alert(a+b++);
}
alert(a++);
}()
之后就有了??
发自「贵邮」
【 在 ztinpn 的大作中提到: 】
:
:
: 请教,为啥
: ...................
第一个中,函数里边的A引用的是它自己,是一个named function expression,运行完之后就没了. 第二个里边的函数是匿名的,引用A的时候找不到,就在全局作用域建了一个A. 你第二函数试试在严格模式下是失败的.
————
微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送
在chrome运行的结果是1,4。这段程序相当于
function A(a){
B=function(b){
alert(a+b++);
}
alert(a++);
}
A(1);
B(2);
就是都是A把人容易搞晕,也就是前面运行A函数,这时候在A函数里面运行的时候会有一个全局变量A覆盖了原来A函数的定义并且形成闭包,然后继续运行到alert(a),这里的a是1。然后下一句的时候就相当于运行覆盖了的那个A函数,它保存了原A函数的参数a的值,现在是2了,然后自己的参数b是赋值2,b++的值还是2,结果就是4了
【 在 leafx 的大作中提到: 】
: 在chrome运行的结果是1,4。这段程序相当于
: function A(a){
: B=function(b){
: ...................
有点懂了
【 在 leafx 的大作中提到: 】
: 在chrome运行的结果是1,4。这段程序相当于
: function A(a){
: B=function(b){
: ...................
应该在全局里先声明一个B吧