await outside of async function doesn't throw error in console
MDN says:
Remember, the
await
keyword is only valid insideasync
functions. If you use it outside of anasync
function's body, you will get aSyntaxError
.
But that's not true.
Try this code in DevTools console, no errors, just result:
async function a(val) { return val; }
await a(10) // await is not inside async function
10
What's wrong with the code or docs?
javascript asynchronous async-await console google-chrome-devtools
add a comment |
MDN says:
Remember, the
await
keyword is only valid insideasync
functions. If you use it outside of anasync
function's body, you will get aSyntaxError
.
But that's not true.
Try this code in DevTools console, no errors, just result:
async function a(val) { return val; }
await a(10) // await is not inside async function
10
What's wrong with the code or docs?
javascript asynchronous async-await console google-chrome-devtools
1
even just a simpleawait 10;
prints 10
– quirimmo
Dec 23 at 17:27
orawait Promise.resolve(10)
– Callam
Dec 23 at 17:34
2
it looks like has been supported since almost one year: chromium.googlesource.com/chromium/src.git/+/…
– quirimmo
Dec 23 at 17:37
1
It works on root level, but you would always write functions in program and you cant use await without making the function async
– Sumer
Dec 23 at 17:47
add a comment |
MDN says:
Remember, the
await
keyword is only valid insideasync
functions. If you use it outside of anasync
function's body, you will get aSyntaxError
.
But that's not true.
Try this code in DevTools console, no errors, just result:
async function a(val) { return val; }
await a(10) // await is not inside async function
10
What's wrong with the code or docs?
javascript asynchronous async-await console google-chrome-devtools
MDN says:
Remember, the
await
keyword is only valid insideasync
functions. If you use it outside of anasync
function's body, you will get aSyntaxError
.
But that's not true.
Try this code in DevTools console, no errors, just result:
async function a(val) { return val; }
await a(10) // await is not inside async function
10
What's wrong with the code or docs?
javascript asynchronous async-await console google-chrome-devtools
javascript asynchronous async-await console google-chrome-devtools
edited Dec 23 at 20:52
Bergi
363k58540866
363k58540866
asked Dec 23 at 17:24
Green
7,38830100171
7,38830100171
1
even just a simpleawait 10;
prints 10
– quirimmo
Dec 23 at 17:27
orawait Promise.resolve(10)
– Callam
Dec 23 at 17:34
2
it looks like has been supported since almost one year: chromium.googlesource.com/chromium/src.git/+/…
– quirimmo
Dec 23 at 17:37
1
It works on root level, but you would always write functions in program and you cant use await without making the function async
– Sumer
Dec 23 at 17:47
add a comment |
1
even just a simpleawait 10;
prints 10
– quirimmo
Dec 23 at 17:27
orawait Promise.resolve(10)
– Callam
Dec 23 at 17:34
2
it looks like has been supported since almost one year: chromium.googlesource.com/chromium/src.git/+/…
– quirimmo
Dec 23 at 17:37
1
It works on root level, but you would always write functions in program and you cant use await without making the function async
– Sumer
Dec 23 at 17:47
1
1
even just a simple
await 10;
prints 10– quirimmo
Dec 23 at 17:27
even just a simple
await 10;
prints 10– quirimmo
Dec 23 at 17:27
or
await Promise.resolve(10)
– Callam
Dec 23 at 17:34
or
await Promise.resolve(10)
– Callam
Dec 23 at 17:34
2
2
it looks like has been supported since almost one year: chromium.googlesource.com/chromium/src.git/+/…
– quirimmo
Dec 23 at 17:37
it looks like has been supported since almost one year: chromium.googlesource.com/chromium/src.git/+/…
– quirimmo
Dec 23 at 17:37
1
1
It works on root level, but you would always write functions in program and you cant use await without making the function async
– Sumer
Dec 23 at 17:47
It works on root level, but you would always write functions in program and you cant use await without making the function async
– Sumer
Dec 23 at 17:47
add a comment |
2 Answers
2
active
oldest
votes
MDN docs is right and it explains how it works in JavaScript.
This is just a feature added by the DevTools for making you easier to test async/await code. And it is not a JavaScript feature.
It looks like it has been supported since 11/08/2017 in DevTools:
https://chromium.googlesource.com/chromium/src.git/+/e8111c396fef38da6654093433b4be93bed01dce
If you spy the
ConsoleModel.js
at line 129, they have the function for evaluating expressions marked as async:
async evaluateCommandInConsole
2
Nice detective work.
– cgTag
Dec 23 at 17:42
add a comment |
Nothing is wrong.
You've found a special feature of the DevTools console! It is there to make it as easy as possible to experiment with async
-await
code in a live environment. You can imagine that any code you enter in the console is wrapped in an async
function automatically. In fact, as another answer pointed out, this is exactly what happens.
It's important to note that even though this works in the console, it is not a feature of JavaScript.
So, all of your observations are correct and expected! The MDN docs are accurate, because if you try to load a script on a page that uses await
outside of an async
function, it will error. On the other hand the DevTools console is designed to make this work (exclusively for developer ergonomics), so your code runs without any errors in the console.
This isn't the only trick the DevTools console has up its sleeve. In general if you really want to test how some code runs on a page, it's best to actually run the script on the page, not in the console.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53905660%2fawait-outside-of-async-function-doesnt-throw-error-in-console%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
MDN docs is right and it explains how it works in JavaScript.
This is just a feature added by the DevTools for making you easier to test async/await code. And it is not a JavaScript feature.
It looks like it has been supported since 11/08/2017 in DevTools:
https://chromium.googlesource.com/chromium/src.git/+/e8111c396fef38da6654093433b4be93bed01dce
If you spy the
ConsoleModel.js
at line 129, they have the function for evaluating expressions marked as async:
async evaluateCommandInConsole
2
Nice detective work.
– cgTag
Dec 23 at 17:42
add a comment |
MDN docs is right and it explains how it works in JavaScript.
This is just a feature added by the DevTools for making you easier to test async/await code. And it is not a JavaScript feature.
It looks like it has been supported since 11/08/2017 in DevTools:
https://chromium.googlesource.com/chromium/src.git/+/e8111c396fef38da6654093433b4be93bed01dce
If you spy the
ConsoleModel.js
at line 129, they have the function for evaluating expressions marked as async:
async evaluateCommandInConsole
2
Nice detective work.
– cgTag
Dec 23 at 17:42
add a comment |
MDN docs is right and it explains how it works in JavaScript.
This is just a feature added by the DevTools for making you easier to test async/await code. And it is not a JavaScript feature.
It looks like it has been supported since 11/08/2017 in DevTools:
https://chromium.googlesource.com/chromium/src.git/+/e8111c396fef38da6654093433b4be93bed01dce
If you spy the
ConsoleModel.js
at line 129, they have the function for evaluating expressions marked as async:
async evaluateCommandInConsole
MDN docs is right and it explains how it works in JavaScript.
This is just a feature added by the DevTools for making you easier to test async/await code. And it is not a JavaScript feature.
It looks like it has been supported since 11/08/2017 in DevTools:
https://chromium.googlesource.com/chromium/src.git/+/e8111c396fef38da6654093433b4be93bed01dce
If you spy the
ConsoleModel.js
at line 129, they have the function for evaluating expressions marked as async:
async evaluateCommandInConsole
edited Dec 24 at 13:12
answered Dec 23 at 17:41
quirimmo
5,26911129
5,26911129
2
Nice detective work.
– cgTag
Dec 23 at 17:42
add a comment |
2
Nice detective work.
– cgTag
Dec 23 at 17:42
2
2
Nice detective work.
– cgTag
Dec 23 at 17:42
Nice detective work.
– cgTag
Dec 23 at 17:42
add a comment |
Nothing is wrong.
You've found a special feature of the DevTools console! It is there to make it as easy as possible to experiment with async
-await
code in a live environment. You can imagine that any code you enter in the console is wrapped in an async
function automatically. In fact, as another answer pointed out, this is exactly what happens.
It's important to note that even though this works in the console, it is not a feature of JavaScript.
So, all of your observations are correct and expected! The MDN docs are accurate, because if you try to load a script on a page that uses await
outside of an async
function, it will error. On the other hand the DevTools console is designed to make this work (exclusively for developer ergonomics), so your code runs without any errors in the console.
This isn't the only trick the DevTools console has up its sleeve. In general if you really want to test how some code runs on a page, it's best to actually run the script on the page, not in the console.
add a comment |
Nothing is wrong.
You've found a special feature of the DevTools console! It is there to make it as easy as possible to experiment with async
-await
code in a live environment. You can imagine that any code you enter in the console is wrapped in an async
function automatically. In fact, as another answer pointed out, this is exactly what happens.
It's important to note that even though this works in the console, it is not a feature of JavaScript.
So, all of your observations are correct and expected! The MDN docs are accurate, because if you try to load a script on a page that uses await
outside of an async
function, it will error. On the other hand the DevTools console is designed to make this work (exclusively for developer ergonomics), so your code runs without any errors in the console.
This isn't the only trick the DevTools console has up its sleeve. In general if you really want to test how some code runs on a page, it's best to actually run the script on the page, not in the console.
add a comment |
Nothing is wrong.
You've found a special feature of the DevTools console! It is there to make it as easy as possible to experiment with async
-await
code in a live environment. You can imagine that any code you enter in the console is wrapped in an async
function automatically. In fact, as another answer pointed out, this is exactly what happens.
It's important to note that even though this works in the console, it is not a feature of JavaScript.
So, all of your observations are correct and expected! The MDN docs are accurate, because if you try to load a script on a page that uses await
outside of an async
function, it will error. On the other hand the DevTools console is designed to make this work (exclusively for developer ergonomics), so your code runs without any errors in the console.
This isn't the only trick the DevTools console has up its sleeve. In general if you really want to test how some code runs on a page, it's best to actually run the script on the page, not in the console.
Nothing is wrong.
You've found a special feature of the DevTools console! It is there to make it as easy as possible to experiment with async
-await
code in a live environment. You can imagine that any code you enter in the console is wrapped in an async
function automatically. In fact, as another answer pointed out, this is exactly what happens.
It's important to note that even though this works in the console, it is not a feature of JavaScript.
So, all of your observations are correct and expected! The MDN docs are accurate, because if you try to load a script on a page that uses await
outside of an async
function, it will error. On the other hand the DevTools console is designed to make this work (exclusively for developer ergonomics), so your code runs without any errors in the console.
This isn't the only trick the DevTools console has up its sleeve. In general if you really want to test how some code runs on a page, it's best to actually run the script on the page, not in the console.
edited Dec 23 at 22:17
Bergi
363k58540866
363k58540866
answered Dec 23 at 22:06
Caleb Miller
3007
3007
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53905660%2fawait-outside-of-async-function-doesnt-throw-error-in-console%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
even just a simple
await 10;
prints 10– quirimmo
Dec 23 at 17:27
or
await Promise.resolve(10)
– Callam
Dec 23 at 17:34
2
it looks like has been supported since almost one year: chromium.googlesource.com/chromium/src.git/+/…
– quirimmo
Dec 23 at 17:37
1
It works on root level, but you would always write functions in program and you cant use await without making the function async
– Sumer
Dec 23 at 17:47