1
qqblog 2014-11-02 15:31:29 +08:00
webkit内核的浏览器都有Inspector,可断点调试JavaScript
|
2
xcatliu 2014-11-02 15:32:32 +08:00
一般就用 chrome 的 develop tools 吧,可以设置断点看变量值是什么。
涉及 ajax 的看看 network。 |
3
puras 2014-11-02 15:40:36 +08:00
调JS一直用FireFox中的FireBug,可以断点调试,也可以直接使用console.log打印变量。。。
还可查看好多东西,如LS所说的Network等 |
4
arslion 2014-11-02 15:44:32 +08:00
我比较粗暴, 直接console.log哈哈
|
5
NemoAlex 2014-11-02 15:55:49 +08:00
alert 出来是 undefined,就是 undefined 咯
|
6
ibigbug 2014-11-02 16:17:10 +08:00
看 network
如果嫌 alert 麻烦的话直接用 chrome 在 source 里面打断点 |
7
lincanbin 2014-11-02 16:46:08 +08:00
ajax的回调里是一个匿名函数,表面看起来你这个回调函数可能包在另一个函数里,但是实际上是异步执行,已经是另一个函数了,这个回调里能使用的变量,只有全局变量。
直接在回调函数里调用包着Ajax的那个函数里的变量是最常见的JavaScript作用域错误。 |
8
cdxem713 2014-11-02 18:57:37 +08:00
@lincanbin 不对吧,根据js的闭包,在回调函数里面肯定是能够用外部的局部变量的。
例如一般用ajax不都这么用么? function getSomething() { var ajax = new XmlHttpRequest(); ajax.open("get",url,true); ajax.onreadystatechange= function() { if (ajax.readyState== 4) { if (ajax.status == 200) { ........... } } }; ajax.send(null) } |
9
cdxem713 2014-11-02 19:00:16 +08:00
@lincanbin 唯一会出现问题的只有settimeout和setinterval,这两个的回调函数的外部应该是全局那个域。
具体的没有描述清楚,可以写个东西试试。 |
10
zhouzm 2014-11-02 20:16:17 +08:00
变量定义全加上 var ,基本上大部分变量作用域的问题就清除了,剩下的再利用 develop tools 断点调试吧
|
11
domino 2014-11-02 22:14:29 +08:00
chrome console
|
12
shuson 2014-11-03 09:18:20 +08:00
除了source里断点和network直接找request,response,还有其他好办法么?
不喜欢console.log打乱代码 |
13
zhhc 2014-11-03 10:40:30 +08:00
chrome 的console,network,beakpoints
|
14
jprovim 2014-11-03 14:16:01 +08:00
chrome做調試, 直接console.log. 與其debug不如花點時間去理解下JavaScript裡面的closure.
|