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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript 基础—变量 运算符

發布時間:2023/12/1 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript 基础—变量 运算符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經過找工作筆試的洗禮,感覺自己js語法方面掌握的不是很系統,今天來梳理下——變量以及運算符。

基礎篇

和C語言的不同點:是一種弱類型語言,申明變量時不需要指定類型;變量名的命名方法也有不同;簡單類型種類也有不同;類型可以相互轉化

1.命名

是以字母,_,$開頭的,由數字,字母,下劃線 $組成的,不包括關鍵子,區分大小寫的串稱為標識符(加入了美元符號,不能以數字開頭啦)。

2. 申明

形式:var ?keyname; 可以多個一起申明,可以申明時初始化。

eg: var obj; var arr=[], objArr={};

注:(1)不需要申明類型,會根據程序的運行 自動轉換類型。(2)沒有定義就使用的,會報錯;申明了,沒有賦值的是undefinedd類型;(3)沒有使用var申明的是全局變量,關于全局變量下面會具體分析。

3.變量類型

簡單類型:boolean ?string ?number ?undefined null

注意點:

boolean:其值是true,false 也會轉換為 0,1 使用, Isload()==1;

string: 當個字符,或者字符串都是string類型;可以用單引號或者雙引號都可以var str='adafsd', str2="abc",其他同C語言;

number:表示 整數,小數;整數包括十進制,八進制(078),十六進制(ox78);數字常量:(Infinity 表示正無窮大 ?NaN 表示非數字)

null:是空類型,只有一個值null.表示沒有數據。

復雜類型:Array ?object

Array:是數組類型,可以用下標訪問,如:var ?t=[a,b,c];可以是復雜數組類型:var t=[{a=b},{a2=b}]

object: 對象類型,可以表示對象的 屬性 -值 ,鍵值對。可以嵌套任意類型。訪問用.進行訪問。

4.傳值和傳址

當變量時簡單類型時,是傳值的;如果變量時復雜變量時,是傳址的,及,傳遞的是原對象的引用(可以是指針,或者別名,指向的是原對象的的內存空間)。

5. 堆棧

簡單類型 存放在棧中,復雜類型存放在堆中,通過引用來操作;棧比堆快,棧可以共享,棧中的內容生存周期是和上下文相關,離開上下文就消亡。這里提到了共享.

eg: var a="abc"?;var b="abc";? 這時 a===b(true);因為 abc存放在棧中,可以共享。

?? var a=new string("abc"); var b="abc"; var c=new string("abc"); 這時 a!==b!==c;在堆中時運行是分配內存,不可以共享,并且堆中的東西和棧中更不相等。

順便 說下,內存管理。javascript中有內存管理機制,只要是沒有人再引用這個單元時,垃圾回收機制(GC)會自動收回內存。

垃圾回收:主要通過標記法和引用法兩種方式。標記法策略:當變量進入一個上下文就為變量標記為“進入環境”,離開上下文就標記為“離開環境”,垃圾回收機制為每個在內存中的變量都進行標記,他會為每個進入上下文的變量或者引用的變量進行清除標記,如果在這之后加上的標記就表示是準備刪除的數據。GC會回收內存,清除標記。引用法:記錄引用他的次數,不引用時減1.

內存泄露:雖然有內存管理機制(和java類似),但是也存在內存泄露的情況。比如閉包。

?


提升篇

主要總結 數據類型轉換,變量作用域,相關內容

?? 1.類型轉換

????分類:分為顯示轉換和隱式轉換

a 、顯示轉換

轉換為數字:Number(); parseInt(stirng,radix);parseFloat(string);

轉換為字符串:String(); toString();

轉換為布爾類型:Boolean(mix);

?

Number()規則

?Number(Null)===0;

Number(undefinde)=NaN;

Number("")===0;

Number(boolean)===0/1;

Number(string):當只包含數字時返回數字;當包含數字是float類型時,返回小數;空字符串返回為0;否則返回為NaN

b 、隱式轉換

1.遞增符號的轉換

????1.??當變量時字符串時,會根據Number()規則,轉換成數字,然后加++,--; 字符串中沒有數字轉換為NaN

????2.? 當變量時boolean時,會轉換為0,1 ,進行++ --操作,變量從boolean 變為數字型。

??? 3.Float 會自動+1;

?

?

?

?

總結:NaN,void,undefined,null ,以及常規的boolean-》0,1

NaN 運算符NaN(其他)結果為NaN(NaN是數字型,但是不是數字,每次都是計算機給分配的隨機值,NaN===NaN(false))

null==undefined(true)在類型轉換時unfinished=》null

null===undefined(false) 兩個是不同的類型,不相等

void(任意):void ?d ; 會將d的值清除 返回undefined,(void 返回undefined)

‘''=='0'(false)

"0"==0(true)

""==0(true)

?void(2)+4=NaN (void(2)=>undefined=》NaN+4=NaN)

?2. 作用域提升

變量必須要定義之后才能使用,但是在一個作用域中,如果先用,再定義也不會報錯,只是出來的結果會不是想象中的。這個就是變量作用域提升。

原理:函數調用時,會建立上下文,(1)聲明參數,并給參數賦值,(2)聲明函數并給函數符函數的引用(3)聲明變量,給變量賦值undefined(對于函數名和變量名重名的情況,會忽略變量的聲明,變量名依然指向函數的引用)

然后才會處理this的指向,最后調用執行;可見在執行之前會將函數內部的所有變量聲明,只是賦值為undefined,具體賦值要在執行期做。

所以類似 eg: alert(t); var t=30; alert(t); 輸出: undefined 30

轉載于:https://www.cnblogs.com/xuruweb/p/4027377.html

總結

以上是生活随笔為你收集整理的Javascript 基础—变量 运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

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