js中的型別和函式引數傳遞型別問題
js中的型別:
2大型別:原始型別和物件。
原始型別有 boolean、number、string這三個普通原始型別,還有null、undefined這倆特殊原始型別
物件嘛就多了,普通物件、內建物件、全域性物件、函式、陣列等。
函式引數傳遞型別:
對於原始型別,傳遞的是值,即複製一份傳入函式,在函式內部修改不影響外部變數本身。
對於物件型別,傳遞的是地址,在函式內部修改物件時會導致外部變數發生變化。
注意這種情況!參考如下程式碼:
var oMyObj = {name:"羅伯特"}; function Test( obj ){ obj.name = "啊!!!"; obj = {name: "啊~~~"}; } Test(oMyObj); alert(oMyObj.name);
表面上看在內部重新定義了變數,應該結果是“啊~~~”才對,可結果是“啊!!!”。
原因是按地址傳遞,在Test執行時是重新聲明瞭一個obj區域性變數,它指向了外部的oMyObj物件。所以函式第一行起作用。但出現obj = {name:"~~~"}時,是改變了obj的指向為新的物件,並沒有影響到外部oMyObj的指向。
相關推薦
js中的型別和函式引數傳遞型別問題
js中的型別: 2大型別:原始型別和物件。 原始型別有 boolean、number、string這三個普通原始型別,還有null、undefined這倆特殊原始型別 物件嘛就多了,普通物件、內建物件、全域性物件、函式、陣列等。 函式引數傳遞型別: 對於原始型別,傳遞的是值,
深入解析js中基本資料型別與引用型別,函式引數傳遞的區別
ECMAScript的資料有兩種型別:基本型別值和引用型別值,基本型別指的是簡單的資料段,引用型別指的是可能由多個值構成的物件。 Undefined、Null、Boolean、Number和String是值型別,其他都是引用型別。其他語言String是
關於Java的引用和函式引數傳遞
Java中沒有了指標,這有時給程式設計師帶來了些許不便。Java的語言設計者強調,這種不便可以通過Java的引用特性得到彌補。即對於Java的任何物件,我們可以申明物件變數,但不產生例項,這樣,把該變數指向具有實際例項的物件,即可實現同一例項物件的多個變數引用,如: int
Java值傳遞和地址傳遞:關於String型別和集合型別作為函式引數時傳值問題的測試
這個問題,可能是太簡單了。稍微有點經驗的,估計都不會犯這個錯誤。不好意思,過了個年,幾天不寫程式碼,生疏了,也就有了下面的bug。先看程式碼,你要是一眼就看出問題了,那就請允許在下水那麼一回。 基本資
JS中的函式引數傳遞到底是按值傳遞還是按引用傳遞
首先我們知道JS中的資料型別大致可以分為簡單資料型別和複雜資料型別; 當我們宣告一個變數並給它賦值時,可以賦給其簡單值和複雜值(以下堆記憶體和棧記憶體的地址表示均隨意取的,只是為了區分,不代表真實的記憶體地址); 針對簡單資料型別: 例1 var simpleData1 = 18 v
String和StringBuffer型別資料進行引數傳遞問題
1.String和StringBuffer的形的參做為傳遞 通常引數傳遞有兩種: 基本型別:不會影響實際
JS中this和物件作為函式引數的區別
一個簡單的例子 要求: 1、一個列表有一些簡單的包含文字的行 2、滑鼠移到某一行上時背景色改為色值為 #f2f2f2,移開滑鼠時則恢復為原背景色 #fff 3、點選新增按鈕,能動態在最後新增一行 提示 - 獲取表格的行,getE
JS中的常量(基本資料型別)和內建物件
JS中的基本資料型別: String 、number、null、boolean、undefined、object、symbol(ES6) 1、 利用typeof運算子時其中只有null是異常的,typeof(null)=object,所以在判斷變數型別是否為null時要注意。同時利用typeof時對於沒有宣
【轉】C++函式引數傳遞中的一級指標和二級指標【【**】】
主要內容: 1、一級指標和二級指標 2、函式指標傳遞的例子 3、什麼時候需要傳遞二級指標? 4、二級指標在連結串列中的使用 1、一級指標和二級指標 一級指標:即我們一般說的指標,就是記憶體地址; 二級指標:指向指標的指標,就是
js中函式引數傳遞
js中的引數傳遞是按照引數型別的不同,傳遞方法不同。如果是基本型別的傳遞,則傳遞的是值的副本,形參和實參是兩個獨立的個體,如果是引用型別的傳遞,那麼傳遞的是這個值在記憶體中的地址的副本,區域性變數的變化會表現在函式外部。 舉例子說明一下: function
JS中函數參數值傳遞和引用傳遞
保持 variant 全局變量 都是 tex over family nor -c 也許大家對於函數的參數都不會太在意,簡單來說,把函數外部的值復制給函數內部的參數,就和把值從一個變量復制到另一個變量一樣。深入研究,你會發現其實沒那麽簡單,這個傳參是要分倆種情況(其實這是個
vue中router-link的引數傳遞和接收
1 第一種方法: 設定要傳遞的引數 路由檔案的配置: 此時不需要做任何的更改 其他元件來獲取傳遞的引數: 在url上表現的顯示: 點選其中的詳細資訊 第二種方法: 設定要傳遞的引數 此時路由檔案需要簡單的配置一下: 注意:兩處的ic名稱一定要一樣 ,和c#
Python---限定函式引數的型別及預設值
python作為一門動態語言,在使用變數之前是不需要進行定義,而是通過動態繫結的方法將變數繫結為某種型別。這樣做為我們使用變數時提供了方便,但有時也給我們使用變數時造成了一定的困擾,例如在使用變數時不知道變數的型別,使用函式時不知道該傳什麼型別·的引數。有時候我們定義函式時也想限定引數型
js中substring和substr函式用法
函式: stringObject.substring(start,stop) 引數: start 必需。一個非負的整數,規定要提取的子串的第一個字元在 stringObject 中的位置。 stop 可選。一個非負的整數,比要提取的子串的最後一個字元在
JS函式引數傳遞
JS中函式的共享傳遞,按值傳遞,引用傳遞 共享傳遞是實參物件的引用的副本 按值傳遞是實參的值的副本 引用傳遞是實參的引用 用c++裡面的知識來講就是共享傳遞是實參物件的指標的副本,按值傳遞是實參的值的副本,引用傳遞是實參的指標。如下圖 functi
java中NaN和Infinity基本資料型別和包裝類(double,Double)
java浮點數運算中有兩個特殊的情況:NAN、INFINITY。 1、INFINITY: 在浮點數運算時,有時我們會遇到除數為0的情況,那java是如何解決的呢? 我們知道,在整型運算中,除數是不能為0的,否則直接執行異常。但是在浮點數運算中,引入了無
Js中apply和Math.max()函式的問題及區別
這篇文章主要介紹了js中apply和Math.max()函式的問題,本文給大家帶來兩種答案,每一種答案給大家介紹的非常詳細,在文章底部給大家提到了js中Math.max.apply和Math.max的區別,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。
JS中的正則表示式/RegExp型別總結
在我看來,正則表示式最主要的作用就是匹配字串,可以用來驗證表單的輸入等功能。不瞭解正則表示式的或者想詳細學學正則表示式的可以參考這篇文章教學:http://deerchao.net/tutorials/regex/regex.htm。 JS通過RegExp型別來支援
C語言中函式引數傳遞的兩種方式
問題及程式碼: /* *完成日期:2018.10.2 * *問題描述:c語言函式引數傳遞的兩種方式 * */ #include <stdio.h> void swap1(int x, int y); //對交換函式myswap1的提前宣告 (傳值
Libevent原始碼分析-----通用型別和函式
Libevent定義了一系列的可移植的相容型別和函式。這使得在各個系統上都有一致的效果,Libevent一般都會在相容通用型別和函式的前面加上ev或evutil字首。 在實現上,Libevent都是使用條件編譯+巨集定義的方式。使用這