摘要:布爾類型的數據類型轉換在中,可以將所有的數據類型的值轉換為布爾類型的值。
語法 區分大小寫
`JavaScript`中的變量、函數名都是區分大小寫的,`name`,`Name`,`NAME`,不是同一個變量標識符
標識符就是變量、函數、屬性的名字或者函數的參數注釋
注釋就是不被計作程序語句,專門用來給程序員自己看的內容 //單行注釋 /* * 多行注釋 * */變量
變量就是一個用來存儲數據的,聲明變量用`var`
//聲明一個變量,名字叫name var name;
如果要定義多個變量,有兩種方式可以定義:
//方式一:分開定義 var name; var age; var sex; //方式二:統一定義 var name,age,sex;給變量賦值
//變量可以在聲明的時候賦值 var name = "John"; //也可以聲明以后再賦值 var name; name = "John"; //這里的變量值也可以是"John",單引號和雙引號都表示字符串 //賦值以后可以修改變量的值 // 方法一 var name = "John"; name = "Tome"; console.log(name);//Tome //方法二 var name; name = "John"; name = "Tome"; console.log(name)//Tome變量的作用域
function demo(){ var name = "John"; } demo();//調用函數--在函數名后面加括號`()`表示執行該函數 console.log(name);//錯誤
在上面這段代碼中,在函數內部定義了一個局部變量,局部變量在函數運行結束以后就會被銷毀,此時在函數外面調用name變量的時候,name這個變量并不存在
function demo(){ name = "John";//全局變量 } demo(); console.log(name); //John
上面這段代碼中在函數內聲明了一個變量,但是并沒有用var聲明,此時當函數運行過后,name就是一個全局變量,那么函數運行結束以后,這個變量并沒有被銷毀,所以在函數體外部依然可以找到name這個變量
前文中提到的全局變量、局部變量、函數體等知識點雖然沒有學過,但是可以提前理解一下,后面會做詳細介紹數據類型
另外,雖然省略var操作符可以定義全局變量,但是不推薦這樣做,因為在局部中定義全局變量難以維護
在javaScript中有5種數據類型(基本數據類型):Undefined,Null,Boolean,Number,String。
Object也是一種數據類型,但是是復雜數據類型,Object本質上是由一對健值對組成。
typeof用來檢測數據類型,返回的結果有:
"undefined"---未定義
"boolean"---布爾類型
"string"---字符串
"number"---數字類型
"object"---對象或者是null
function`---函數類型的數據
typeof null會返回object,這是因為特殊值null被認為是一個空對象
// undefined var name; console.log(typeof name); //var定義,結果是string,let定義是undefined // let,ECMAScript6中定義數據的關鍵字 // boolean var flag = true; console.log(typeof flag); //boolean // string var name = "Json"; console.log(typeof name); //string // object var obj = { "name": "Json", "age": 20 }; console.log(typeof obj); //object // function function add(a,b) { return a + b; } console.log(typeof add);//functionUndefined類型
Undefined只有一個值,即undefined。對于聲明了但是沒有初始化的變量,其值就是一個undefined。
var name; console.log(name == undefined);// true // 這個例子類似于 var name = undefined; console(name == undefined);// trueNull類型
Null類型是一個只有一個值的數據類型,這個值是null。
var person = null; console.log(typeof person);// object
這里給person賦值為null,表示person是一個空指針的變量,將來指向一個對象。
所以如果要定義一個變量,將來用于保存對象,那么賦初始值的時候要賦值為null。比如下面這個例子:
var person = null; if(person == null){ person = { "name":"Jerry", "age":20 } }Boolean類型
Boolean有兩個字面值:true和false。
var flag = true; var isSuccess = false;
布爾類型的數據類型轉換
在JavaScript中,可以將所有的數據類型的值轉換為布爾類型的值。轉換方法如下:
var name = "Json"; var nameBoolean = Boolean(name); console.log(nameBoolean);//true
轉換規則:
String類型,非空為true,空為false
Number類型,非0為true,0和NaN為false
Object類型,任何對象為true,null為false
比如我們可以用字符串的非空作為判斷的條件:
var message = "Please send me latter"; if(message){ send(message); } function send(mes){ console.log("發送消息---消息內容為"+mes); }Number類型
關于Number類型的數據,我們不去研究八進制、十六進制,這些類型的數據會給我們的學習帶來不小的負擔,另外數值的范圍我們也不去研究。
數值轉換關于數值轉換,需要學習三個函數:Number(),parseInt(),parseFloat()。
Number():用于將任何數據類型轉換為數值類型的數據;
parseInt():將字符串類型的數字轉換為int類型的數據;
parseFloat:將字符串類型的數據轉換為float類型的數據。
Number():
如果是Boolean類型的數據,true被轉換為1,false被轉換為0;
如果是數字,只是簡單的傳入和返回;
如果是null,返回0;
如果是undefined返回的是NaN
如果是字符串
如果是"123",返回123,如果是"0123"返回的是123;
如果是十六進制的數據,則會返回對應的十進制的值;
如果是空字符串,則返回0
var number1 = Number("John");//NaN var number2 = Number("");//0 var number3 = Number("090");//90 var number4 = Number(true);//1 var number5 = Number(false);//0 var number8 = 12+"number";//NaN
parseInt():
var number = parseInt("070");//56
前面的Number()則是將"070"轉換成了70,而parseInt()則是將070轉換成了56,這是因為parseInt()函數將"070"當作是八進制的一個數值進行轉換
為了消除這種困惑,在parseInt()函數中還有另一個參數作為補充,第二個參數可以指定被轉換值按照什么類型的值去轉換:
var num1 = parseInt("10", 2);//2 (按二進制解析) var num2 = parseInt("10", 8);//8 (按八進制解析) var num3 = parseInt("10", 10);//10(按十進制解析) var num4 = parseInt("10", 16);//16(按十六進制解析)
parseFloat()與parseInt()類似,是從第一個字符開始解析,解析到字符串末尾或者遇到第二個小數點為止,比如’12.34.32’解析的結果就是12.34。
下面的例子中,標記有(了解)的可以不做重點關注:
var num1 = parseFloat("1234blue");//1234 (整數) var num2 = parseFloat("0xA"); //0 (了解) var num3 = parseFloat("22.5");//22.5 var num4 = parseFloat("22.34.5");//22.34 var num5 = parseFloat("0908.5"); //908.5 var num6 = parseFloat("3.125e7"); //31250000 (了解)String類型
String類型的數據,簡單來說,就是由雙引號("")和單引號("")包裹起來的都是String類型的數據。
在這里,單引號和雙引號都可以用來表示字符串,要注意一點,引號要對稱:
String name = "Jhon";//前后引號不一致,錯誤字符串的拼接
String name = "Tom"; String subString = "name:"+ name; // 如果是數字類型的數據和字符串拼接,那么會默認將數字轉換成字符串,然后拼接 String stringNumber = 1 + "string";字符串轉換
toString()方法
toString()默認是以十進制的方式去轉換的,但是我們可以通過添加參數來規定轉換的方式
var num = 10; console.log(num.toString());// "10"--十進制 console.log(num.toString(2));// "1010"---二進制 console.log(num.toString(8));// "12"---八進制 console.log(num.toString(10));// "10"---十進制 console.log(num.toString(16));// "a"---十六進制
String()方法
String()方法的轉換規則與toString()方法基本類似,這是因為它的轉換規則:
如果被轉換的值有toString()方法,就調用toString()方法;
如果被轉換值是null,返回null;
如果被轉換值是undefined,返回undefined。
var value1 = 30; var value2 = null; var value3 = undefined; console.log(String(value1));//"30" console.log(String(value2));//"null" console.log(String(value3));//"undefined"Object類型
Object類型的數據其實就是一對健值對,健值對就是一個屬性對應一個值,對象的創建方式可以有兩種,一種是用關鍵字new創建,一種是用花括號創建:
第一種
var obj = new Object();//創建一個對象 // 給對象添加屬性和值 obj.name = "Tom"; obj.age = 20; // 取對象中的值 console.log(obj.name);// "Tom" console.log(obj.age);// 20
第二種
var obj = { "name": "Tom", "age": 20 } // 這里是兩種取值方式 console.log(obj.name); //"Tom" console.log(obj.age); //20 console.log(obj["name"]); //"Tom" console.log(obj["age"]); //20
下面的這些知識點可以作為了解,后面會細講
參考文獻:Object 的每個實例都具有下列屬性和方法:
constructor:保存著用于創建當前對象的函數。構造函數(constructor) 就是 Object();
hasOwnProperty(propertyName):檢查給定的屬性在當前對象實例中(而不是在實例 的原型中)是否存在。其中,作為參數的屬性名(propertyName)必須以字符串形式指定(例 如:o.hasOwnProperty("name"));
isPrototypeOf(object):用于檢查傳入的對象是否是傳入對象的原型;
propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用 for-in 語句來枚舉。與 hasOwnProperty()方法一樣,作為參數的屬性名必須以字符串形式指定;
toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應;
toString():返回對象的字符串表示;
valueOf():返回對象的字符串、數值或布爾值表示。通常與 toString()方法的返回值相同。
《JavaScript高級程序設計》
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106897.html
摘要:年,以為藍本的建議被提交給了歐洲計算機制造商協會,。而且給未經聲明的變量賦值在嚴格模式下會導致拋出的錯誤。這也正是使用操作符檢測值時會返回的原因。函數檢查過程是。但是這個轉換過程會導致特殊的和值應用位操作時,這兩個值會被當成來處理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要為 JavaScript 的一些常見知識點,是我在 JavaScrip...
摘要:年,以為藍本的建議被提交給了歐洲計算機制造商協會,。而且給未經聲明的變量賦值在嚴格模式下會導致拋出的錯誤。這也正是使用操作符檢測值時會返回的原因。函數檢查過程是。但是這個轉換過程會導致特殊的和值應用位操作時,這兩個值會被當成來處理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要為 JavaScript 的一些常見知識點,是我在 JavaScrip...
摘要:年,以為藍本的建議被提交給了歐洲計算機制造商協會,。而且給未經聲明的變量賦值在嚴格模式下會導致拋出的錯誤。這也正是使用操作符檢測值時會返回的原因。函數檢查過程是。但是這個轉換過程會導致特殊的和值應用位操作時,這兩個值會被當成來處理。 前言 本文是 Awesome JavaScript 系列文章的第一篇,本系列文章主要為 JavaScript 的一些常見知識點,是我在 JavaScrip...
摘要:作用域鏈的作用就是做標示符解析。事件循環還有個明顯的特點單線程。早期都是用作開發,單線程可以比較好當規避同步問題,降低了開發門檻。單線程需要解決的是效率問題,里的解決思想是異步非阻塞。 0、前言 本人在大學時非常癡迷java,認為java就是世界上最好的語言,偶爾在項目中會用到一些javascript,但基本沒放在眼里。較全面的接觸javascript是在實習的時候,通過這次的了解發現...
閱讀 2247·2021-11-25 09:43
閱讀 2934·2019-08-30 15:52
閱讀 1885·2019-08-30 15:44
閱讀 975·2019-08-30 10:58
閱讀 752·2019-08-29 18:43
閱讀 3208·2019-08-29 18:36
閱讀 2310·2019-08-29 17:02
閱讀 1447·2019-08-29 17:01