摘要:原始類型引用類型中沒有類但是有類型類型分兩種原始類型和引用類型保存對象的引用原始類型的復制是直接復制多個副本互不干擾引用類型中只保存引用對象實例只有一份解除引用使用會觸發自動垃圾回收還提供了種內建類型內建類型可以用來實例化他們也是保存
https://icbd.github.io/wiki/web/2016/10/07/js%E7%B1%BB%E5%9E%8B.html
原始類型 && 引用類型JavaScript中沒有類但是有類型.
類型分兩種--原始類型(string,number,boolean,null,undefined)和引用類型(保存對象的引用).
var a = "haha"; var b = a; a = "hehe"; console.log(a); //hehe console.log(b); //haha引用類型中只保存引用,對象實例只有一份.
var arr = ["haha","hehe"]; var arr2 = arr; arr.push("heihei"); console.log(arr); //["haha", "hehe", "heihei"] console.log(arr2); //["haha", "hehe", "heihei"]
解除引用使用null,會觸發自動垃圾回收.
arr = null;
JavaScript還提供了6種內建類型-Object,Array,Function,Date,Error,RegExp.
內建類型可以用new來實例化,他們也是保存對象引用.
判斷類型用typeof鑒別類型.
console.log(typeof true);//"boolean" console.log(typeof "你好!");//"string" console.log(typeof 2016);//"number" console.log(typeof undefined);//"undefined" console.log(typeof null);//"object" 這個是特例,應該用 n === null 來判定 console.log(typeof [1, 2, 3]);//"object" var obj = { name: "haha", age: 123 }; console.log(typeof obj);//"object" var add = function (a, b) { return a + b; }; console.log(typeof add);//"function"
對于引用類型, 可以用instanceof來判定構造來源.
instanceof可判定繼承, 所有對象都是Object的實例.
var arr = [1, 2, 3, 4]; console.log(arr instanceof Array); //true console.log(arr instanceof Object); //true function Person(name) { this.name = name; } var xiaoMing = new Person("小明"); console.log(xiaoMing instanceof Person); //true console.log(xiaoMing instanceof Object); //true console.log(Person instanceof Function); //true console.log(Person instanceof Object); //true靈異現象1
在原始類型上調用方法???
var str = "hello world"; console.log(str.toUpperCase());//HELLO WORLD
實際上,js引擎做了些額外工作:
var str = "hello world"; var temporary = new String(str); var _temporary = temporary.toUpperCase(); temporary = null; console.log(_temporary);
這里的String叫原始封裝類型.
這個過程叫自動打包,在原始對象的值被讀取的時候進行.
console.log(str instanceof String);// false
instanceof 沒有涉及到str值的讀取,所以不會生成臨時對象,str也就不會被判定為String.
靈異現象2var f = new Boolean(false); if (f) { console.log("it is true."); } else { console.log("it is false."); } // "it is true."
f在這里是一個Boolean的對象,對象總會判為真.即使他的內容是false.
JavaScript的false只有以下幾種:
false 0 "" undefined null NaN
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80636.html
摘要:簡單地說程序就是數據和方法計算機能做的就是計算這個數據可以是字符串各種類型的數值整數小數等類內的屬性根本上是還是的基本數據類型布爾類型的東東為了更加快速地寫出代碼現在的語言都是高層次的抽象即所謂的高級編程語言了高級編程語言中的一些特性如訪問 簡單地說, 程序就是數據和方法, 計算機能做的就是計算, 這個數據可以是: 1.字符串, 2.各種類型的數值(整數, 小數等), 3.Java類內...
摘要:它們的參數是一個回調函數,所有數組成員依次執行該回調函數,直到找出第一個返回值為的成員,然后方法會返回該成員,返回該成員的位置。 幾乎所有的編程語言都原生支持數組類型,因為數組是最簡單的內存數據結構。 它存儲一系列同一種數據類型的值,但是在javascript里可以在數組里保存不同類型的值,但是我們最好還是要遵守最佳實踐,不要那么做。 創建和初始化,javascript聲明,創建和...
摘要:關于兩個專業術語的討論起自對你不知道的一書的閱讀學習。遇到,編譯器會詢問作用域是否已經有一個該名稱的變量存在于同一個作用域的集合中。摘錄來自你不知道的。 JS 編譯之 LHS RHS 一、前言 最近和朋友聊技術的時候,聊到 LHS RHS,我竟然沒聽說過 沒聽說過。。。 于是成功引起了我的好奇心。 關于兩個專業術語的討論起自對《你不知道的JavaScript》一書的閱讀學習。 二、編譯...
摘要:的大小寫事件的名字沒有自動化的大小寫轉換,觸發的事件名必須和見提供的事件名完全匹配的情況下才能正常運行。父組件向子組件傳參時,無論何種命名方式,必須使用同一名字進行接收。 kebab-case:短橫線命名法,多個單詞之間使用短橫線-進行連接,單詞全部小寫。如:first-name,user-info,create-order。camelCased:駝峰命名法,第一個單詞小寫,從第二個單...
摘要:前端小白最近面試幾家公司,寫點面經分享給大家,同時記錄下自己的缺點以供后期補足,各個公司的開發方向不同,請各位理性看待。直接現場手敲觸發的樣式。數組去重如何實現如果用的話,里面如何寫排序算法。對象何時被修改心態需要調整好,不緊張不匆忙。 前端小白最近面試幾家公司,寫點面經分享給大家,同時記錄下自己的缺點以供后期補足,各個公司的開發方向不同,請各位理性看待。 問題相關 Css 布局方式有...
閱讀 2155·2021-11-12 10:36
閱讀 2147·2021-09-03 10:41
閱讀 2761·2021-08-19 10:57
閱讀 1230·2021-08-17 10:14
閱讀 1487·2019-08-30 15:53
閱讀 1210·2019-08-30 15:43
閱讀 975·2019-08-30 13:16
閱讀 2983·2019-08-29 16:56