日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript高级day01-AM【WebStrom安装、数据类型分类及判断、数据-内存-变量、引用变量赋值、对象的组成】

發布時間:2024/9/30 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript高级day01-AM【WebStrom安装、数据类型分类及判断、数据-内存-变量、引用变量赋值、对象的组成】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

筆記、視頻、源碼:JavaScript(基礎、高級)筆記匯總表【尚硅谷JavaScript全套教程完整版】

目? ?錄

P1?01.尚硅谷_JS高級_準備?07:07

WebStrom 下載及安裝

1、WebStorm 卸載

2、WebStrom 下載(官網)

3、WebStrom 下載(百度網盤)

JS高級 Xmind 思維導圖

WebStorm 導入文件

P2?02.尚硅谷_JS高級_數據類型?40:43

數據類型 分類

數據類型 判斷

P3?03.尚硅谷_JS高級_相關問題?20:31

實例

1. undefined與null的區別?

2. 什么時候給變量賦值為null呢?

3. 嚴格區別變量類型與數據類型?

P4?04.尚硅谷_JS高級_數據_變量_內存?47:39

1. 什么是數據?

2. 什么是內存?

3. 什么是變量?

4. 內存、數據、變量三者之間的關系。

P5?05.尚硅谷_JS高級_相關問題1?24:22

情況討論:var a = xxx(賦值操作),a內存中到底保存的是什么?

關于引用變量賦值問題

P6?06.尚硅谷_JS高級_相關問題2?25:38

關于引用變量賦值問題

關于數據傳遞問題

內存管理


P1?01.尚硅谷_JS高級_準備?07:07

WebStrom 下載及安裝

嗶哩嗶哩網站 視頻:【分享】WebStorm2020.1安裝教程-Windows篇

1、WebStorm 卸載

??

2、WebStrom 下載(官網)

下載鏈接

3、WebStrom 下載(百度網盤)

  • 【鏈接:https://pan.baidu.com/s/1-iVrlbLbvx8MX4UZT5lIeA? ?提取碼:zjxs】

??

??

??

??

????

??

??

??

??

??

??

JS高級 Xmind 思維導圖

WebStorm 導入文件

??

P2?02.尚硅谷_JS高級_數據類型?40:43

數據類型 分類

基本(值)類型

  • Number:任意數值
  • String:任意文本
  • Boolean:true / false
  • undefined:undefined
  • null:null
  • 對象(引用)類型

  • Object:任意對象([]、函數...)
  • Array:特別的對象類型(數值下標 / 內部數據有序)
  • Function:特別的對象類型(可執行)
  • 數據類型 判斷

    typeof

  • 返回數據類型的字符串表達;
  • 可以區別:數值、字符串、布爾值、undefined、function;
  • 不能區別:null與object、一般object與array。
  • instanceof

  • 專門用來判斷對象數據的類型:Object、Array與Function。
  • ===

  • 可以判斷:undefined和null。
  • ===?可以判斷:undefined和null。默認值唯一 ---> undefined:undefined;null:null。

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>01_數據類型</title> </head> <body> <script type="text/javascript">var b1 = { // 對象類型b2: [1, 'abc', console.log],b3: function () {console.log('b3')return function () {return 'xfzhang'}}}console.log(b1 instanceof Object, b1 instanceof Array) // true falseconsole.log(b1.b2 instanceof Array, b1.b2 instanceof Object) // true trueconsole.log(b1.b3 instanceof Function, b1.b3 instanceof Object) // true trueconsole.log(typeof b1.b3 === 'function') // trueconsole.log(typeof b1.b2[2] === 'function') // trueb1.b2[2](4) // 4console.log(b1.b3()()) // xfzhangconsole.log(typeof Array) // functionconsole.log(typeof b1.b2) // objectconsole.log(typeof b1.b2[2]) // functionconsole.log("---")console.log(b1.b2[2](4)) // 4 undefinedconsole.log("--- ---")console.log(b1.b2[2]) // ? log() { [native code] }console.log("--- --- --- ---")console.log(b1.b2[2]('abc')) // 'abc' undefinedconsole.log("--- --- ---")console.log(b1.b3()) // b3 ? (){ return 'xfzhang' } </script> </body> </html>

    P3?03.尚硅谷_JS高級_相關問題?20:31

    實例

    使用同一個構造函數創建的對象,我們稱為一類對象,也將一個構造函數稱為一個類。我們將通過一個構造函數創建的對象,稱為是該類的實例。

    1. undefined與null的區別?

    1. undefined與null的區別?

    undefined代表定義未賦值;null定義并賦值,只是值為null。

    2. 什么時候給變量賦值為null呢?

    2. 什么時候給變量賦值為null呢?

    初始賦值,表明將要賦值為對象;結束前,讓對象成為垃圾對象(被垃圾回收器回收)。初始化賦值:將要作為引用變量使用, 但對象還沒有確定。結束時:將變量指向的對象成為垃圾對象。

    var a = null // a將指向一個對象,但對象此時還沒有確定
    a = null // 讓a指向的對象成為垃圾對象

    ??

    3. 嚴格區別變量類型與數據類型?

    3. 嚴格區別變量類型與數據類型?

    js的變量本身是沒有類型的,變量的類型實際上是變量內存中數據的類型(js是弱類型的語言)。var a; 判斷變量類型,實際上 是判斷值的類型。

    數據的類型(數據對象):
    ? ? * 基本類型
    ? ? * 對象類型

    變量的類型(變量內存值的類型):
    ? ? * 基本類型:保存基本類型的數據(保存基本類型數據的變量)。
    ? ? * 引用類型:保存對象地址值(保存對象地址值的變量)。

    P4?04.尚硅谷_JS高級_數據_變量_內存?47:39

    1. 什么是數據?

    存儲于內存中代表特定信息的'東東',本質就是0101(二進制)...
    數據的特點:具有可讀、可傳遞、可運算的基本特性。
    萬物(一切)皆數據,函數也是數據。
    內存(程序)中所有操作的目標: 數據
    ?* 算術運算
    ?* 邏輯運算
    ?* 賦值
    ?* 運行函數(調用函數傳參)
    ...

    2. 什么是內存?

    內存條通電后產生的可存儲數據的空間(臨時的)。

    內存產生和死亡: 內存條(集成電路板)==>通電==>產生一定容量的存儲(內存)空間==>存儲各種數據==>處理數據==>斷電==>內存和數據全部消失

    內存的空間是臨時的, 而硬盤的空間是持久的
    一塊內存包含2個數據
    ?* 內部存儲的數據(一般數據/地址數據)
    ?* 內存地址值數據
    內存分類
    ?* 棧: 全局變量/局部變量 (空間較小)
    ?* 堆: 對象 (空間較大)

    3. 什么是變量?

    值可以變化的量,由變量名與變量值組成。

    一個變量對應一塊小內存,變量名用來查找對應的內存,變量值就是內存中保存的內容。

    4. 內存、數據、變量三者之間的關系。

    內存是一個容器,用來存儲程序運行需要操作的數據(內存是用來存儲數據的空間)。

    變量是內存的標識,我們通過變量找到對應的內存,進而操作(讀/寫)內存中的數據。

    P5?05.尚硅谷_JS高級_相關問題1?24:22

    情況討論:var a = xxx(賦值操作),a內存中到底保存的是什么?

    問題:var a = xxx(賦值操作),a內存中到底保存的是什么?

  • xxx是一個基本數據,保存的就是這個數據。
  • xxx是一個對象,保存的是對象的地址值。
  • xxx是一個變量,保存的xxx的內存內容(保存的可能是基本數據,也可能是地址值數據)。
  • 關于引用變量賦值問題

    關于引用變量賦值問題

    • 2個引用變量指向同一個對象(保存的內容是同一個對象的地址值),通過一個引用變量修改對象內部數據,另一個引用變量也看得見(看見的是修改之后的數據)。
    • 2個引用變量指向同一個對象,讓一個引用變量指向另一個對象,另一個引用變量還是指向原來的對象。

    此圖,針對第1條解釋。

    此圖,針對第2條解釋。

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>02_關于引用變量賦值問題</title></head><body><script type="text/javascript">//1. 2個引用變量指向同一個對象, 通過一個引用變量修改對象內部數據, 另一個引用變量也看得見var obj1 = {}var obj2 = obj1obj2.name = 'Tom'console.log(obj1.name) // Tomfunction f1(obj) {obj.age = 12}f1(obj2)console.log(obj1.age) // 12//2. 2個引用變量指向同一個對象,讓一個引用變量指向另一個對象, 另一個引用變量還是指向原來的對象var obj3 = {name: 'Tom'}var obj4 = obj3obj3 = {name: 'JACK'}console.log(obj4.name) // Tomfunction f2(obj) {obj = {name: 'Bob'}}f2(obj4)console.log(obj4.name) // Tomvar a = {age: 12}; // 2個引用變量指向同一個對象var b = a; // 2個引用變量指向同一個對象a = {name: 'Bob', age: 13}; // 將新的對象賦值給ab.age = 14; // 另一個引用變量還是指向原來的對象console.log(b.age, a.name, a.age); // 14 "Bob" 13function fn2 (obj) {obj = {age: 15}; // 新的對象(垃圾對象)}fn2(a); // 函數執行完,函數內部的局部變量(obj)會自動釋放//總結:obj引用的地址值發生改變,不再引用傳進來的形參地址,并且函數作用域的原因,這個對象只能在函數內使用。console.log(a.age); // 13</script></body> </html>

    P6?06.尚硅谷_JS高級_相關問題2?25:38

    關于引用變量賦值問題

    obj和a存的堆地址相同,下一步賦值obj的堆地址改變了,但是他并沒有改變之前a里存的堆地址的內容。

    就是把a的內容拷貝一份到函數參數obj上,但函數內部obj指向了新對象,但不影響a指向的對象。

    函數形參傳進去之后,復制a的值給obj,這兩個棧內存指向一個堆內存的數據。之后obj={age:15},這時:obj指向另一個堆內存,這兩個堆內存不一樣了,再用obj修改age也不會影響到a指向的age。

    關于數據傳遞問題

    問題:在js調用函數時傳遞變量參數時,是值傳遞還是引用傳遞?

    • 理解1:都是值(基本/地址值)傳遞。
    • 理解2:可能是值傳遞,也可能是引用傳遞(地址值)。
    • 只有值傳遞,沒有引用傳遞,傳遞的都是變量的值,只是這個值可能是基本數據,也可能是地址(引用)數據。
    • 如果后一種看成是引用傳遞,那就值傳遞和引用傳遞都可以有。

    因為函數里的a是函數內的局部變量,換成this.a = a + 1,這時候this.a就是你最開始定義的a。

    假設形參是x,調用函數傳參時,發生了兩件事:1、讀取全局變量a的值;2、將值賦值給x ,然后執行函數內代碼。

    括號里的a是全局里的a的值copy給他的。

    內存管理

    問題:JS引擎如何管理內存?

    1. 內存生命周期

  • 分配小內存空間,得到它的使用權(分配需要的內存)。
  • 存儲數據,可以反復進行操作(使用分配到的內存)。
  • 釋放小內存空間(不需要時將其釋放/歸還)。
  • 2. 釋放內存

  • 局部變量:函數執行完 自動釋放(為執行函數分配的棧空間內存)。
  • 對象:成為垃圾對象==>垃圾回收器回收(存儲對象的堆空間內存:當內存沒有引用指向時,對象成為垃圾對象,垃圾回收器后面就會回收釋放此內存。)
  • ????

    var a = 3; var obj = {}; // 占用3個空間,2個棧區一個堆區:a = 3、obj、{}(對象占用空間最大)。

    obj = null; // 占用2個空間,{}占用的空間被回收。

    obj等于任意值,與堆的連接就取消了,所以堆的那塊成了垃圾,而棧這邊的obj還是等于任意值,全局變量obj并沒有釋放。

    總結

    以上是生活随笔為你收集整理的JavaScript高级day01-AM【WebStrom安装、数据类型分类及判断、数据-内存-变量、引用变量赋值、对象的组成】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。