javascript中的debugger是啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中的debugger是啥意思?相关的知识,希望对你有一定的参考价值。
在JS脚本中,有一个fn:
function a()
debugger;
if(...)...
else...;
;
不知道这个函数里面一开始的那个debuger有什么 ,有谁能解释一下, 我用的框架是Extjs,js脚本中有很多方法中都用到了debugger;,不知道这个是干啥的,有什么用?
谁能解释的清楚一点?
需要设置2个地方
1: ie浏览器--工具--高级--浏览--禁用脚本调试(Internet Explorer) ,把钩去掉
2: 要安装Microsoft Visual Studio,作为调试工具 参考技术A 用来进行前台页面 js调试的,相当于c#的断点 参考技术B Debugger为一种调试软件,工程师或程序员可以用来验证算法。Debugger可以访问带以下命令的DSP硬件逻辑:(Start、stop、read/write、register、reset) Debugger支持C或者汇编调入算法及源代码。此外,程序和数据存储器,寄存器和其他相关目标均可看到。Debugger也可完成算法分析及把数据下载到目标板上本回答被提问者采纳
JavaScript 回调中的术语“通过”或“通过”是啥意思?
【中文标题】JavaScript 回调中的术语“通过”或“通过”是啥意思?【英文标题】:What does the term "pass" or "passing" something mean in JavaScript callbacks?JavaScript 回调中的术语“通过”或“通过”是什么意思? 【发布时间】:2019-01-25 09:48:07 【问题描述】:目前正在学习 JavaScript 中回调的含义,我正在努力理解回调的工作原理以及传递 this 或传递 that 的术语以及它如何与回调一起工作?我有一些示例代码,我想展示一下并简要解释为什么我不明白。
var users = ["Sam", "Ellie", "Bryan"];
function addUser(username, chickenNugget)
setTimeout(function()
users.push(username);
chickenNugget();
, 200);
function getUsers()
setTimeout(function()
console.log(users);
, 100);
addUser("Jake", getUsers);
getUsers();
调用 chickenNugget 时会发生什么?函数中的代码是否会在遇到 chickenNugget 时停止并重置,直到再次调用函数 addUser?
【问题讨论】:
“为什么参数 chickenNugget 被归类为回调” - 因为...它被 addUser 回调了? 添加了新信息 JS 中没有参数类型,所以chickenNugget
只是一个可以传递任何东西的参数(number
,string
,function
,object
,...)也可以随意命名。
不清楚你在问什么。您是否尝试运行代码以查看它的作用?这些与标题有何关系?
所以我在看一个关于回调的教程,他使用了不同的术语,比如 this 传递给 this ,我想这是什么意思,他使用 setTimeout 允许回调从addUser 在 getUsers 之前,即使在回调未在 addUser 代码块中实现之前处理了 getUsers
【参考方案1】:
回调是 Javascript 中处理异步的一种方式。有时您有使用 setTimeout
之类的异步函数,但您需要等待这些异步函数完成,然后才能继续运行更多代码(这取决于异步请求),而回调是实现此目的的一种方式。我已经更新了您的示例以说明我上面的意思,希望对您有所帮助:
var users = ["Sam", "Ellie", "Bryan"];
function addUser(username, callback)
setTimeout(function()
users.push(username);
// this will be called only after username has been added to users
callback();
, 200);
function isJakeInUsers()
if (users.includes("Jake"))
console.log("Jake is in users! :)");
else
console.log("Jake is not in users! :(");
// as a callback, isJakeInUsers will only be called after "Jake" has been added to users
addUser("Jake", isJakeInUsers);
// this gets called immediately, before "Jake" has been added to users
isJakeInUsers();
【讨论】:
【参考方案2】:回调只不过是传递给以后使用的指令。回调是 javascript 的基础,因为它是一种异步语言。这意味着如果一个操作需要外部服务,它将执行下一个命令,而无需等待该操作完成。
这是一个同步执行的代码示例
var total_in_cart = 0;
var shipping = 0;
var total = 0;
total_in_cart = 100; // USD
shipping = 10;
total = total_in_cart + shipping;
console.log(total);
这将输出 110,因为它会等待每一行完成执行,然后再执行下一行。
下面是一个异步执行代码的例子
var total_in_cart = 0;
var shipping = 0;
var total = 0;
total_in_cart = 100; // USD
shipping = get_shipping_fee_from_dhl_api();
total = total_in_cart + shipping;
console.log(total);
这将输出 100,因为 JS 没有等待 api 调用完成并继续执行新行。为了解决这个问题,您必须发送进一步的指令,以便在 api 请求完成后回调,因此使用回调这个词。
因此,在这种情况下,您必须将所有计算封装到可以作为回调可执行文件发送的代码中。在 JS 中,您将使用一个函数并将其分配给一个变量,然后您将其传递给将接受它并执行它的函数。
请记住
function getUsers()
是一样的
var getUsers = function() ;
【讨论】:
以上是关于javascript中的debugger是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章