国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

004-讀書筆記-JavaScript高級程序設(shè)計 基本概念(下)

nevermind / 1012人閱讀

摘要:操作符,會將數(shù)值改變正數(shù)變成負(fù)數(shù)負(fù)數(shù)變成正數(shù)。同時,也說明了,使用兩個邏輯非操作符和的操作結(jié)果相同。操作符得到的是余數(shù)。不相等操作符有兩種。

這篇筆記的內(nèi)容對應(yīng)的是《JavaScript高級程序設(shè)計(第三版)》中的第三章。

1.操作符 1-1 一元操作符

遞增和遞減操作符

遞增和遞減操作符有兩個 ++--。一元操作符使用的時候,可以前置也可以后置。由于兩個操作方式類似,先只說明 ++-- 類比就可以了。

使用 ++ 操作符,相當(dāng)于使用了一個簡化的語句:

var age = 27;
age++; // 這里相當(dāng)于 age = age + 1; 的簡化
console.log(age); // 28

前置 ++,先加后用;后置 ++,先用后加

前置操作:先加后用

var age = 27;
var num = ++age;       // 相當(dāng)于 age = age + 1; var num = age; 的簡寫
console.log(age, num); // 28 28

后置操作:先用后加

var age = 27;
var num = age++;       // 相當(dāng)于 var num = age; age = age + 1; 的簡寫
console.log(age, num); // 28 27

思考,下面的代碼是什么樣的簡寫?

var num1 = 12;
var num2 = 10;
var num3 = num1++ + ++num2;
console.log(num1, num2, num3); // 13 11 23

全寫形式如下:

var num1 = 12;
var num2 = 10;
// ============
num2 = num2 + 1;
var num3 = num1 + num2;
num1 = num1 + 1;
// ============
console.log(num1, num2, num3); // 13 11 23

一元加和減操作符

一元加和減操作符包括 +-

+ 放在數(shù)值前面,不會修改數(shù)值的內(nèi)容。

var num = 123;
num = +num; // 123

+ 放在任意數(shù)據(jù)類型之前,都會發(fā)生數(shù)據(jù)類型轉(zhuǎn)換;轉(zhuǎn)換的結(jié)果和使用 Number 方法的結(jié)果相同。可以理解成 Number 方法的簡寫形式。

+true        // 1
Number(true) // 1

- 操作符,會將數(shù)值改變:正數(shù)變成負(fù)數(shù);負(fù)數(shù)變成正數(shù)。

var num = 123;
num = -num; // -123
1-2 布爾操作符

邏輯非(!):

邏輯非就是取反操作,操作結(jié)果如下:

操作數(shù) | 結(jié)果
-|-
true | false
false | true

邏輯非操作符后面可以跟任意數(shù)據(jù)類型的數(shù)據(jù),操作結(jié)果就是 !Boolean()。也就是通過 Boolean() 函數(shù)得到的布爾類型值的取反操作。

!NaN          // true
!Boolean(NaN) // true

同時,也說明了,使用兩個邏輯非操作符和 Boolean() 的操作結(jié)果相同。

!!NaN          // false
Boolean(NaN)   // false

邏輯與(&&):

第一個操作數(shù) | 第二個操作數(shù) | 結(jié)果
-|-|-
true | true | true
true | false | false
false | true | false
false | false | false

邏輯與操作符也被稱為短路操作符,也就是,第一個操作數(shù)的結(jié)果為 false,那么就不會執(zhí)行第二個操作數(shù)了。

var num = (3>2) && 5; // 第一個操作數(shù)的結(jié)果是true,因此num的結(jié)果為第二個操作數(shù)的結(jié)果 5
console.log(num); // 5
var num = (3<2) && 5; // 第一個操作數(shù)的結(jié)果是false,因此num的結(jié)果為第一個操作數(shù)的結(jié)果 false
console.log(num); // false

邏輯或(||):

第一個操作數(shù) | 第二個操作數(shù) | 結(jié)果
-|-|-
true | true | true
true | false | true
false | true | true
false | false | false

邏輯或也是一種短路操作符,如果第一個操作數(shù)的結(jié)果為 true,那么就不會執(zhí)行第二個操作數(shù)了。

var num = (3>2) || 5; // 第一個操作數(shù)的結(jié)果是 true,最終的結(jié)果是第一個操作數(shù)的值
console.log(num); // true
var num = (3<2) || 5; // 第一個操作數(shù)的值是 false,最終結(jié)果是第二個操作數(shù)的值
console.log(num); // 5
1-3 乘性操作符

乘性操作符有三種:* / %。使用乘性操作符的時候,會首先通過 Number() 方法轉(zhuǎn)化操作數(shù),然后再做運(yùn)算。

/ 操作符得到的結(jié)果不像其他語言一樣只得到整數(shù),而是得到最終的結(jié)果。

console.log(2 / 3); // 0.6666666666666666
console.log(3 / 2); // 1.5
console.log(4 / 2); // 2

% 操作符得到的是余數(shù)。

console.log(3 % 2); // 1

通過 /% 得到余數(shù)和結(jié)果。

function func(num1, num2) {
  return {
    res: ~~(num1 / num2), // ~~ 的作用是取整數(shù)
    yus: num1 % num2
  }
}

var res = func(17, 3);
console.log(`結(jié)果:${res.res},余數(shù):${res.yus}`); // 結(jié)果:5,余數(shù):2
1-4 加性操作符

加性操作符有兩個:+ -

+ 操作符,在操作數(shù)不是數(shù)值的情況下,會先通過 String() 方法將操作數(shù)轉(zhuǎn)成字符串,然后字符串相加。

console.log("5" + "2"); // "52"

- 操作符,在操作數(shù)不是數(shù)值的情況下,會通過 Number() 方法將操作數(shù)轉(zhuǎn)成數(shù)值,然后操作。

console.log("5" - "2"); // 3
1-5 關(guān)系操作符

關(guān)系運(yùn)算符有四個:> >= < <=。比較的規(guī)則,一般是把操作數(shù)轉(zhuǎn)成數(shù)值,然后進(jìn)行比較。

var res1 = "3" < 2; // "3" 會轉(zhuǎn)成數(shù)值 3,然后比較

比較字符串,會比較字符串對應(yīng)位置上的字符編碼:

var res1 = "abc" < "aBc"; // false
console.log("a : " + "a".charCodeAt(0)); // 97
console.log("b : " + "b".charCodeAt(0)); // 98
console.log("B : " + "B".charCodeAt(0)); // 66
console.log("c : " + "c".charCodeAt(0)); // 99

上面代碼中,b 的編碼大于 B 的編碼,因此為 false。

1-6 相等操作符

相等操作符有兩種:== ===。不相等操作符有兩種 != !==

== : 僅比較值是否相等

=== : 不僅比較值,還要比較數(shù)據(jù)類型

一些特殊情況:

表達(dá)式 | 值
-|-
null == undefined | true
"NaN" == NaN | false
5 == NaN | false
NaN == NaN | false
NaN != NaN | true
false == 0 | true
true == 1 | true
true == 2 | false
undefined == 0 | false
null == 0 | false
"5" == 5 | true
"5" === 5 | false

1-7 三目運(yùn)算符

三目運(yùn)算符的語法:variable = boolean_expression ? true_value : false_value。其實是對 if-else 語句的簡寫:

if(boolean_expression) {
  // true_value
} else {
  // false_value
}

保存兩個數(shù)中的最大值:

var num1 = 3;
var num2 = 4;
var res = num1 > num2 ? num1 : num2; // 4
1-8 逗號操作符

逗號運(yùn)算符可以用于一條語句中執(zhí)行多個操作。

用于聲明多個變量:

var num1 = 1, num2 = 2, num3 = 3;

用于賦值,總是會把最后一個逗號后面的值賦值給變量:

var num = (1, 2, 3, 4, 5); // 5

可以用于 ++ 操作符的理解:

var num1 = 10;
var num2 = 12;
var res = 0;
res = num1++ + ++num2; // 23

最后一句代碼可以通過逗號運(yùn)算符,理解成下面的形式:

num2 = num2 + 1, res = num1 + num2, num1 = num1 + 1;
2.語句

由于語句在編程中經(jīng)常使用,更多的細(xì)節(jié),在實際使用的過程中會逐漸加深理解,因此,這里只記錄一下基本語法。

2-1 if語句

單個條件的語法:

if (condition) {
  // ...
} else {
  // ...
}

多個條件的語法:

if (condition1) {
  // ...
} else if (condition2) {
  // ... 
} else {
  // ...
}
2-2 do-while語句

語法如下:

do {
  // ...
} while (expression);

循環(huán)至少會被執(zhí)行一次。

var i = 0;
do {
  console.log("hi~~ " + i++);
} while (i > 1);

// hi~~ 0
2-3 while語句

語法如下:

while (expression) {
  // ...
}

不滿足條件,循環(huán)不會執(zhí)行:

var i = 0;
while (i > 1) {
  console.log("hi~~ " + i++);
}
2-4 for語句

語法如下:

for (initalization; expression; post-loop-expression) {
  // ...
}

求出 1-100 的和。

var sum = 0;
for (var i = 1; i <= 100; i++) {
  sum += i;
}
console.log("1 + ... + 100 = " + sum);
2-5 for-in語句

for-in 語句是一種精準(zhǔn)的迭代語句,可以用來枚舉對象的屬性。

for (property in expression) {
  // ...
}

例子如下:

for (var item in window) { // 循環(huán)BOM中window對象中的屬性
  console.log(item);
}

如果被迭代對象的屬性值是 null 或者 undefined,for-in 語句會報出錯誤,因此,應(yīng)該做容錯處理。

for (var item in window) { // 循環(huán)BOM中window對象中的屬性
  if(item !== null && item !== undefined){ // 容錯處理
    console.log(item);
  }
}
2-6 break和continue語句

break 和 continue 用來在循環(huán)中精準(zhǔn)控制代碼的執(zhí)行。

continue 是退出當(dāng)前循環(huán),繼續(xù)執(zhí)行下一個循環(huán)

breank 是退出整個循環(huán)

for (var i = 0; i < 10; i++) {
  if (i === 5) {
    break; // i 等于 5 的時候,退出當(dāng)前循環(huán)
  }
  console.log("i = " + i);
}

上面代碼中,當(dāng) i 等于 5 的時候,循環(huán)就不再執(zhí)行了。

for (var i = 0; i < 10; i++) {
  if (i === 5) {
    continue; // 當(dāng) i 等于 5 的時候,退出當(dāng)前循環(huán),接著下一次循環(huán)
  }
  console.log("i = " + i);
}

上面代碼中,當(dāng) i 等于 5 的時候,就不會輸出,然后接著執(zhí)行 i 等于 6 的情況。

2-7 switch語句

語法如下:

switch (expression) {
  case value:
    // ...
    break;
  case value:
    // ...
    break;
  default:
    // ...
    break;
}

其中需要說明的是,判斷的每一項是 expression 的值與 value 是否全等。

switch ("1") {
  case 1:
    console.log("相等");
    break;
  default:
    console.log("全等");
    break;
}

// "全等"
3.函數(shù) 3-1 函數(shù)的組成

一個函數(shù)的組成由:關(guān)鍵字function、函數(shù)名、函數(shù)參數(shù)、函數(shù)體、返回值

function 函數(shù)名(參數(shù)1, 參數(shù)2, ..., 參數(shù)n) {
  函數(shù)體
  return 返回值;
}

一個簡單的求兩數(shù)之和的函數(shù)。

function getSum(num1, num2) {
  return num1 + num2;
}
console.log("1 + 2 = " + getSum(1, 2));

注意:不能把函數(shù)名和函數(shù)參數(shù)命名為 eval 或 arguments。

3-2 函數(shù)的參數(shù)

ECMAScript 中,傳遞函數(shù)的參數(shù)比較自由,可以不用和定義函數(shù)的參數(shù)保持一致。

function getSum(num1, num2) {
  return num1 + num2;
}
console.log(getSum());          // 不傳參數(shù)
console.log(getSum(1));         // 傳一個參數(shù)
console.log(getSum(1, 2));      // 傳兩個參數(shù)
console.log(getSum(1, 2, 3));   // 傳三個參數(shù)

其實在函數(shù)的內(nèi)部,始終存在一個類似于數(shù)組的對象 arguments,通過這個對象,可以實現(xiàn)不同的個數(shù)參數(shù)的傳遞。

function getSum(num1, num2) {
  console.log(typeof arguments);
  for (var i = 0; i < arguments.length; i++) {
    console.log("arguments[" + i + "] = " + arguments[i]);
  }
}
getSum()
getSum(1)
getSum(1, 2)
getSum(1, 2, 3)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/92007.html

相關(guān)文章

  • JavaScript高級程序設(shè)計讀書筆記

    摘要:為了每個對象都能通過來檢測,需要以或者的形式來調(diào)用,傳遞要檢查的對象作為第一個參數(shù),稱為。對象都是動態(tài)的,這就意味著每次訪問對象,都會運(yùn)行一次查詢。是語言中立的用于訪問和操作和文檔。 一、第三章 基本概念: 1.理解參數(shù) 1.1 可以向函數(shù)中傳遞任意數(shù)量的參數(shù),并且可以通過arguments對象來訪問這些參數(shù)。 1.2 arguments對象只是類似數(shù)組,它通過length來確定傳進(jìn)來...

    dayday_up 評論0 收藏0
  • JavaScript高級程序設(shè)計》(第3版)讀書筆記 第4章 變量、作用域和內(nèi)存問題

    摘要:具體說就是執(zhí)行流進(jìn)入下列任何一個語句時,作用域鏈就會得到加長語句的塊。如果局部環(huán)境中存在著同名的標(biāo)識符,就不會使用位于父環(huán)境中的標(biāo)識符訪問局部變量要比訪問全局變量更快,因為不用向上搜索作用域鏈。 基本類型和引用類型的值 ECMAscript變量包含 基本類型值和引用類型值 基本類型值值的是基本數(shù)據(jù)類型:Undefined, Null, Boolean, Number, String ...

    lidashuang 評論0 收藏0
  • 003-讀書筆記-JavaScript高級程序設(shè)計 基本概念(上)

    摘要:尚未聲明的變量,只能執(zhí)行一項操作,就是檢測該變量的數(shù)據(jù)類型。表示的是空對象指針,因此,使用操作符得到的結(jié)果是。 這篇筆記的內(nèi)容對應(yīng)的是《JavaScript高級程序設(shè)計(第三版)》中的第三章。 1.語法 1-1 區(qū)分大小寫 ECMAScript 中的一切都是區(qū)分大小寫的。 test 和 Test 首字母不同,那么它們就不相同 typeof 和 typeOf 中間有個字母大小寫不同...

    shmily 評論0 收藏0
  • Javascript 設(shè)計模式讀書筆記(二)——封裝,簡單的創(chuàng)建對象模式

    摘要:創(chuàng)建對象中,創(chuàng)建對象的基本模式有三種。因此,在設(shè)計構(gòu)造函數(shù)時,需要進(jìn)行慎重考慮。因此在中,這種問題被稱作繼承破壞封裝。靜態(tài)成員每個只有一份,直接通過類對象進(jìn)行訪問。 什么是封裝 找工作時一些公司給了offer后我就想知道真正拿到手的是多少,畢竟賦稅繁重。但各種稅也好,五險一金也好我實在是弄不清楚,于是我就會在網(wǎng)上的一些稅后收入計算器上進(jìn)行計算,只需要填寫一些基本信息,比如稅前收入,所...

    lentrue 評論0 收藏0
  • 004-讀書筆記-Vue官網(wǎng) Class與Style的綁定

    摘要:綁定綁定,使用,簡寫的形式是。綁定比較靈活,可以使用表達(dá)式字符串對象或數(shù)組。綁定字符串綁定字符串的時候只能綁定一個,不能綁定多個。 1.綁定Class 綁定Class,使用 v-bind:class,簡寫的形式是 :class。綁定Class比較靈活,可以使用表達(dá)式、字符串、對象或數(shù)組。 1-1 搭建結(jié)構(gòu) 首先,新建一些 class 樣式: .colorRed { colo...

    hufeng 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<