Skip to content

Various small fixes on the JavaScript 101 Conditional Code page. #350

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 21 additions & 22 deletions page/javascript-101/conditional-code.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,30 @@ source: http://jqfundamentals.com/legacy
attribution:
- jQuery Fundamentals
---

Sometimes a block of code should only be run under certain conditions. Flow control – via `if` and `else` blocks – lets you run code if certain conditions have been met.

```
// Flow control
// Flow control.

var foo = true;
var bar = false;

if ( bar ) {
// this code will never run
// This code will never run.
console.log( "hello!" );
}

if ( bar ) {

// this code won't run
// This code won't run.

} else {

if ( foo ) {

// this code will run

// This code will run.
} else {

// this code would run if foo and bar were both false

// This code would run if foo and bar were both false.
}

}
Expand All @@ -45,31 +43,31 @@ Be mindful not to define functions with the same name multiple times within sepa
In order to use flow control successfully, it's important to understand which kinds of values are "truthy" and which kinds of values are "falsy." Sometimes, values that seem like they should evaluate one way actually evaluate another.

```
// Values that evaluate to true
// Values that evaluate to true:
"0";
"any string";
[]; // an empty array
{}; // an empty object
1; // any non-zero number
[]; // An empty array.
{}; // An empty object.
1; // Any non-zero number.
```

```
// Values that evaluate to false
""; // an empty string
NaN; // JavaScript's "not-a-number" variable
// Values that evaluate to false:
""; // An empty string.
NaN; // JavaScript's "not-a-number" variable.
null;
undefined; // be careful -- undefined can be redefined!
0; // the number zero
undefined; // Be careful -- undefined can be redefined!
0; // The number zero.
```

## Conditional Variable Assignment with the Ternary Operator

Sometimes a variable should be set depending on some condition. An `if`/`else` statement works, but in many cases the ternary operator is more convenient. The ternary operator tests a condition; if the condition is true, it returns a certain value, otherwise it returns a different value.

The ternary operator:

```
// set foo to 1 if bar is true;
// otherwise, set foo to 0
// Set foo to 1 if bar is true; otherwise, set foo to 0:
var foo = bar ? 1 : 0;
```

Expand All @@ -80,7 +78,8 @@ While the ternary operator can be used without assigning the return value to a v
Rather than using a series of `if`/`else` blocks, sometimes it can be useful to use a `switch` statement instead. `switch` statements look at the value of a variable or expression, and run different blocks of code depending on the value.

```
// A switch statement
// A switch statement.

switch ( foo ) {

case "bar":
Expand Down Expand Up @@ -122,7 +121,7 @@ if ( stuffToDo[ foo ] ) {

} else {

stuffToDo["default"]();
stuffToDo[ "default" ]();

}
```
Expand Down