JavaScript的学习笔记

赋值过程是从右到左进行的。所有 = 操作符右边的值都会被赋到左边的变量。

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在函数中充当占位符(也叫形参)的作用,参数可以为一个或多个。调用一个函数时所传入的参数为实参,实参决定着形参真正的值。简单理解:形参即形式、实参即内容。

这是带有两个参数的函数, param1param2

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";

ifelse 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"

posted @ 2018-03-15 14:19  细行精心玉  阅读(251)  评论(0编辑  收藏  举报