赋值过程是从右到左进行的。所有 =
操作符右边的值都会被赋到左边的变量。
myVar = 5;
myNum = myVar;
数值 5
被赋给变量 myVar
中, 然后变量 myVar
又赋给变量 myNum
,这样子 myNum
变量中的值也是 5
了。
通常地我们会在initialize开始声明变量的时候就会给变量赋一个初始值。
var myVar = 0;
创建一个名为 myVar
的变量并指定一个初始值 0
。
当未声明时,返回的是undefined;
使用 驼峰命名法 来书写一个 Javascript 变量,在 驼峰命名法 中,变量名的第一个单词的首写字母小写,后面的单词的第一个字母大写。
举个栗子:
var someVariable;
var anotherVariableName;
var thisVariableNameIsTooLong;
JavaScript 中使用 -
来做减法运算。+-*/
使用
++
,可以我们很容易地对变量进行自增或者+1
运算。
i++;
等效于
i = i + 1;
提示
i++;
这种写法,省去了书写=符号的必要。使用自减符号
--
,你可以很方便地对一个变量执行 自减 或者减一操作。
i--;
等效于
i = i - 1;
在数学中,看一个数是奇数还是偶数,只需要看这个数除以2得到的余数是0还是1。
17 % 2 = 1 (17 is 奇数)
48 % 2 = 0 (48 is 偶数)在编程当中,通常通过赋值来修改变量的内容。请记住,计算先
=
右边,然后把计算出来的结果赋给左边。
myVar = myVar + 5;
以上是最常见的运算赋值语句,先运算,再赋值。
还有一类操作符是一步到位既做运算也赋值的。
操作这类符的其中一种就是
+=
运算符。
myVar += 5;
把也是数值5
加到变量myVar
上。var a = 3;
var b = 17;
var c = 12;// 请只修改这条注释以下的代码
a += 12;
b += 9;
c +=7;a-=1;和减是一样的
字符串的拼接
在 JavaScript 中,当
+
操作符与字符串
一起使用的时候,它被称作 连接 操作符。你可以通过和其他字符串连接 来创建一个新的字符串。举个例子
'My name is Alan,' + ' I concatenate.'注意
当心空格。连接操作不会添加两个字符串之外的空格,所以想加上空格的话,你需要自己在字符串里面添加。总结 字符串的拼接和赋值,计算赋值需要学习。
你可以通过在字符串变量或字符串后面写上
.length
来获得字符串变量字符串
值的长度。
"Alan Peter".length; // 10
理解字符串的不可变性!当你搞懂不可变性后immutable.js对于你就是小菜一碟了。
在 JavaScript 中,
字符串
的值是 不可变的,这意味着一旦字符串被创建就不能被改变。例如,下面的代码:
var myStr = "Bob";
myStr[0] = "J";是不会把变量
myStr
的值改变成 "Job" 的,因为变量myStr
是不可变的。注意,这 并不 意味着myStr
永远不能被改变,只是字符串字面量 string literal 的各个字符不能被改变。改变myStr
中的唯一方法是重新给它赋一个值,就像这样:var myStr = "Bob";
myStr = "Job"; 重新赋值我们可以像操作字符串一样通过数组索引
[index]
来访问数组中的数据。数组索引的使用与字符串索引一样,不同的是,通过字符串的索引得到的是一个字符,通过数组索引得到的是一个条目。与字符串类似,数组也是 基于零 的索引,因此数组的第一个元素的索引是
0
。例如
var array = [1,2,3];
array[0]; // 等于 1
var data = array[1]; // 等于 2与字符串的数据不可变不同,数组的数据是可变的,并且可以自由地改变。
例如
var ourArray = [3,2,1];
ourArray[0] = 1; // ourArray等于 [1,2,1].push()
接受把一个或多个参数,并把它“推”入到数组的末尾。var arr = [1,2,3];
arr.push(4);
// 现在arr的值为 [1,2,3,4]改变数组中数据的另一种方法是用
.pop()
函数。
.pop()
函数用来“抛出”一个数组末尾的值。我们可以把这个“抛出”的值赋给一个变量存储起来。数组中任何类型的条目(数值,字符串,甚至是数组)可以被“抛出来” 。
var oneDown = [1, 4, 6].pop();
现在oneDown
的值为6
,数组变成了[1, 4]
。这就是
.shift()
的用武之地。它的工作原理就像.pop()
,但它移除的是第一个元素,而不是最后一个。你不仅可以
shift
(移出)数组中的第一个元素,你也可以unshift
(移入)一个元素到数组的头部。
.unshift()
函数用起来就像.push()
函数一样, 但不是在数组的末尾添加元素,而是在数组的头部添加元素。
函数的参数
parameters
在函数中充当占位符(也叫形参)的作用,参数可以为一个或多个。调用一个函数时所传入的参数为实参,实参决定着形参真正的值。简单理解:形参即形式、实参即内容。这是带有两个参数的函数,
param1
和param2
:function testFun(param1, param2) {
console.log(param1, param2);
}接着我们调用
testFun
:
testFun("Hello", "World");
我们传递了两个参数,
"Hello"
和"World"
。在函数内部,param1
等于“Hello”,param2
等于“World”。请注意,testFun
函数可以多次调用,每次调用时传递的参数会决定形参的实际值。在 JavaScript 中, 作用域 涉及到变量的作用范围。在函数外定义的变量具有 全局 作用域。这意味着,具有全局作用域的变量可以在代码的任何地方被调用。
这些没有使用
var
关键字定义的变量,会被自动创建在全局作用域中,形成全局变量。当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时会产生意想不到的后果。因此你应该总是使用var关键字来声明你的变量。不相等运算符(
!=
)与相等运算符是相反的。这意味着不相等运算符中,如果“不为真”并且返回false
的地方,在相等运算符中会返回true
,反之亦然。与相等运算符类似,不相等运算符在比较的时候也会转换值的数据类型。例如
1 != 2 // true
1 != "1" // false
1 != '1' // false
1 != true // false
0 != false // false严格不相等运算符(
!==
)与全等运算符是相反的。这意味着严格不相等并返回false
的地方,用严格相等运算符会返回true
,反之亦然。严格相等运算符不会转换值的数据类型。例如
3 !== 3 // false
3 !== '3' // true
4 !== 3 // true使用
大于等于
运算符(>=
)来比较两个数字的大小。如果大于等于运算符左边的数字比右边的数字大或者相等,它会返回true
。否则,它会返回false
。与相等运算符相似,
大于等于
运算符在比较的时候会转换值的数据类型。例如
6 >= 6 // true
7 >= '3' // true
2 >= 3 // false
'7' >= 9 // false使用 小于 运算符(
<
)比较两个数字的大小。如果小于运算符左边的数字比右边的数字小,它会返回true
。否则,他会返回false
。与相等运算符类似,小于 运算符在做比较的时候会转换值的数据类型。例如
2 < 5 // true
'3' < 7 // true
5 < 5 // false
3 < 2 // false
'8' < 4 // false有时你需要在一次判断中做多个操作。当且仅当运算符的左边和右边都是
true
,逻辑与 运算符(&&
)才会返回true
。同样的效果可以通过if语句的嵌套来实现:
if (num > 5) {
if (num < 10) {
return "Yes";
}
}
return "No";只有当
num
的值在6和9之间(包括6和9)才会返回 "Yes"。相同的逻辑可被写为:if (num > 5 && num < 10) {
return "Yes";
}
return "No";如果任何一个操作数是
true
,逻辑或 运算符 (||
) 返回true
。反之,返回false
。举个例子:
if (num > 10) {
return "No";
}
if (num < 5) {
return "No";
}
return "Yes";只有当
num
大于等于5或小于等于10时,函数返回"Yes"。相同的逻辑可以简写成:if (num > 10 || num < 5) {
return "No";
}
return "Yes";
if
、else if
语句中代码的执行顺序是很重要的。在条件判断语句中,代码的执行顺序是从上到下,所以你需要考虑清楚先执行哪一句,后执行哪一句。
这有两个例子。
第一个例子:
function foo(x) {
if (x < 1) {
return "Less than one";
} else if (x < 2) {
return "Less than two";
} else {
return "Greater than or equal to two";
}
}第二个例子更改了代码的执行顺序:
function bar(x) {
if (x < 2) {
return "Less than two";
} else if (x < 1) {
return "Less than one";
} else {
return "Greater than or equal to two";
}
}这两个函数看起来几乎一模一样,我们传一个值进去看看它们有什么区别。
foo(0) // "Less than one"
bar(0) // "Less than two"if的区别是先判断小的条件,在满足大的条件,最后在是其他。
if/else
语句串联在一起可以实现复杂的逻辑,这是多个if/else if
语句串联在一起的伪代码:if (condition1) {
statement1
} else if (condition2) {
statement2
} else if (condition3) {
statement3
. . .
} else {
statementN
}任务
把
if
/else if
语句串联起来实现下面的逻辑:
num < 5
- return "Tiny"num < 10
- return "Small"num < 15
- return "Medium"num < 20
- return "Large"num >= 20
- return "Huge"