What does assignment in while condition check?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
while(a = foo())
{
bar();
}
Is this checking:
- If assignment is successful, run bar, or
- If a is defined and non-null, run bar, or
- Something else ?
javascript while-loop
add a comment |
while(a = foo())
{
bar();
}
Is this checking:
- If assignment is successful, run bar, or
- If a is defined and non-null, run bar, or
- Something else ?
javascript while-loop
add a comment |
while(a = foo())
{
bar();
}
Is this checking:
- If assignment is successful, run bar, or
- If a is defined and non-null, run bar, or
- Something else ?
javascript while-loop
while(a = foo())
{
bar();
}
Is this checking:
- If assignment is successful, run bar, or
- If a is defined and non-null, run bar, or
- Something else ?
javascript while-loop
javascript while-loop
edited Jan 3 at 2:01
jhpratt
3,194102433
3,194102433
asked Jan 3 at 1:51
Robert C. HollandRobert C. Holland
545324
545324
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
On every iteration, it assigns the result of the foo()
call to a
, and if that result was truthy, it runs the loop and tries again until the result of the call is falsey.
For example, while assigning inside a condition is generally a code smell, it's seen often enough when trying to iterate over capture groups in a global regular expression:
const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops
If the assignment is not successful, and the cause of that non-success would throw an error, then the whole script stops due to the error. (unless there's a try
/ catch
block around it)
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%2f54015406%2fwhat-does-assignment-in-while-condition-check%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
On every iteration, it assigns the result of the foo()
call to a
, and if that result was truthy, it runs the loop and tries again until the result of the call is falsey.
For example, while assigning inside a condition is generally a code smell, it's seen often enough when trying to iterate over capture groups in a global regular expression:
const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops
If the assignment is not successful, and the cause of that non-success would throw an error, then the whole script stops due to the error. (unless there's a try
/ catch
block around it)
add a comment |
On every iteration, it assigns the result of the foo()
call to a
, and if that result was truthy, it runs the loop and tries again until the result of the call is falsey.
For example, while assigning inside a condition is generally a code smell, it's seen often enough when trying to iterate over capture groups in a global regular expression:
const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops
If the assignment is not successful, and the cause of that non-success would throw an error, then the whole script stops due to the error. (unless there's a try
/ catch
block around it)
add a comment |
On every iteration, it assigns the result of the foo()
call to a
, and if that result was truthy, it runs the loop and tries again until the result of the call is falsey.
For example, while assigning inside a condition is generally a code smell, it's seen often enough when trying to iterate over capture groups in a global regular expression:
const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops
If the assignment is not successful, and the cause of that non-success would throw an error, then the whole script stops due to the error. (unless there's a try
/ catch
block around it)
On every iteration, it assigns the result of the foo()
call to a
, and if that result was truthy, it runs the loop and tries again until the result of the call is falsey.
For example, while assigning inside a condition is generally a code smell, it's seen often enough when trying to iterate over capture groups in a global regular expression:
const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops
If the assignment is not successful, and the cause of that non-success would throw an error, then the whole script stops due to the error. (unless there's a try
/ catch
block around it)
const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops
const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops
edited Jan 3 at 1:59
answered Jan 3 at 1:53
CertainPerformanceCertainPerformance
97.5k165887
97.5k165887
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.
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%2f54015406%2fwhat-does-assignment-in-while-condition-check%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