????????JavaScript與Swift一樣拌滋,是動(dòng)態(tài)語言類型哥谷,即不用指定變量類型,會(huì)根據(jù)賦值的內(nèi)容動(dòng)態(tài)的判斷出它的類型瓶堕。與Swift不同的是隘道,JavaScript定義變量的時(shí)候,也不需要指定變量類型或者必須得賦初始值郎笆。JavaScript可以在賦值的時(shí)候重新定義變量的類型谭梗。而Swift一旦確定了變量的類型,是不能再修改的宛蚓。
? ? ? ? 與swift不同的是激捏,在JavaScript中是采用this來引用自身的屬性方法等,而不像iOS開發(fā)凄吏,是調(diào)用self來調(diào)用远舅。但是用法和用意是一樣的。
? ? ? ? 在JavaScript中痕钢,聲明變量類型图柏,是使用new來聲明的。比如new String任连、new Number蚤吹、new Boolean等。
????????JavaScript的數(shù)字類型只有Number類型随抠,該類型包含所有的其他語言的基礎(chǔ)數(shù)值類型(int裁着、float、double等)拱她。 ? ? ? ?
????????JavaScript數(shù)組的創(chuàng)建形式:javascript的方式方式有兩種:1跨算、使用new Array() ? 2、和swift一樣椭懊,直接賦值。如:1: var cars = new Array();。2:var cars = ["a","b","c"];氧猬。
? ??????JavaScript的對(duì)象背犯,即key-value類型,即iOS所說的字典類型盅抚。JavaScript的定義方式和Swift的方式是一樣的漠魏,如:var?person={firstname:"John", lastname:"Doe", id:5566};但是與swift不同的是,JavaScript的對(duì)象的對(duì)象可以是函數(shù)類型妄均,及value為某個(gè)函數(shù)類型柱锹。如:var person = { firstName: "John", lastName : "Doe",id : 5566,fullName : function() { return this.firstName + " " + this.lastName;}};換句話說,在JavaScript中丰包,對(duì)象即是類禁熏,與swift有異曲同工之妙。
? ? ? ? 在JavaScript中邑彪,Undefined 這個(gè)值表示變量不含有值瞧毙。即定義了變量沒有賦值,該變量為Undefined寄症。null 和 undefined 的值相等宙彪,但類型不等,(1)undefined:是所有沒有賦值變量的默認(rèn)值有巧,自動(dòng)賦值释漆。(2)null:主動(dòng)釋放一個(gè)變量引用的對(duì)象,表示一個(gè)變量不再指向任何對(duì)象地址篮迎。
????????JavaScript可以通過將變量的值設(shè)置為 null 來清空變量男图。而swift中是使用nil,但是柑潦,Swift一旦指定了明確的類型享言,是不能夠?qū)⒆兞康闹翟O(shè)置為 null 來清空變量的。
? ??????JavaScript?函數(shù)和swift函數(shù)是一樣的使用方式渗鬼。只是聲明方式不一樣览露。
? ??????JavaScript的運(yùn)算符與swift是一樣的。比較符有些不同譬胎,JavaScript中多了絕對(duì)等號(hào)差牛。即“===”表示值和類型都完全相同,也就有不絕對(duì)等號(hào)“!==”堰乔,表示不絕對(duì)等于(值和類型有一個(gè)不相等偏化,或兩個(gè)都不相等)
? ??????typeof 操作符,可以用來檢測(cè)變量的數(shù)據(jù)類型镐侯。
? ??????constructor?屬性返回所有 JavaScript 變量的構(gòu)造函數(shù)侦讨。可以使用 constructor 屬性來查看對(duì)象是否為數(shù)組 (包含字符串 "Array"):function?isArray(myArray) { return myArray.constructor.toString().indexOf("Array") >?-1;} ≡下保可以使用 constructor 屬性來查看對(duì)象是否為日期 (包含字符串 "Date"):function?isDate(myDate) {return myDate.constructor.toString().indexOf("Date") >?-1;}
? ??????JavaScript的變量骗污,可以先使用,后聲明沈条。因?yàn)镴avaScript會(huì)把聲明的而未進(jìn)行賦值的變量自動(dòng)的提升到方法的最頂部需忿。
? ? ? ? 在JavaScript中,定義常量是使用const關(guān)鍵字蜡歹,這個(gè)swift有很大的差別屋厘。swift是用let關(guān)鍵字來定義常量。而JavaScript的let關(guān)鍵字是用來定義局部變量的月而,即le聲明的變量只能在該代碼塊中有效汗洒。
? ??????在 JavaScript 中, 全局作用域是針對(duì) JavaScript 環(huán)境。 在 HTML 中, 全局作用域是針對(duì) window 對(duì)象景鼠。使用?var?關(guān)鍵字聲明的全局作用域變量屬于 window 對(duì)象仲翎,即是全局作用域,使用?let?關(guān)鍵字聲明的全局作用域變量不屬于 window 對(duì)象铛漓,即是局部作用域溯香。
????????JavaScript的閉包,和swift的閉包是不一樣的浓恶,JavaScript的閉包玫坛,是一種自我調(diào)用函數(shù)的方式,此時(shí)包晰,最外層的函數(shù)中的變量會(huì)只調(diào)用一次湿镀。如:var add = (function () { var counter = 0;return function () {return counter += 1;}})();add();add();add();獲得的結(jié)果:計(jì)數(shù)器為 3。