第二種寫法
創(chuàng)新互聯(lián)主營羅平網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,羅平h5微信小程序開發(fā)搭建,羅平網(wǎng)站營銷推廣歡迎羅平等地區(qū)企業(yè)咨詢
是錯(cuò)的
沒那么些的
第一種是強(qiáng)制轉(zhuǎn)型
第三種是用b作為一個(gè)string的構(gòu)造方法的參數(shù)
來創(chuàng)建一個(gè)新的strng對象
string類的構(gòu)造方法
可以接受字符型也就是char或者char數(shù)組當(dāng)參數(shù)
你的b應(yīng)該不屬于上邊2中情況
JavaScript中的運(yùn)算符優(yōu)先級是一套規(guī)則。該規(guī)則在計(jì)算表達(dá)式時(shí)控制運(yùn)算符執(zhí)行的順序。具有較高優(yōu)先級的運(yùn)算符先于較低優(yōu)先級的運(yùn)算符執(zhí)行。例如,乘法的執(zhí)行先于加法。
算數(shù)運(yùn)算符:
加+,減—,乘*,除/,求余%,加加++,減減——,
加減乘除求余運(yùn)算與數(shù)學(xué)上的用法完全一樣。
不過,加號+還有連接字符串的作用,其他運(yùn)算符還可以將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)值型,參見 JavaScript中數(shù)據(jù)類型轉(zhuǎn)換總結(jié) 中的隱式轉(zhuǎn)換部分。
++,——分為前置和后置,前置表示在使用該變量之前加/減1,后置表示在使用之后加/減1。
邏輯運(yùn)算符:
1.: 與運(yùn)算, 當(dāng)與運(yùn)算的兩個(gè)內(nèi)容都為true的時(shí)候,結(jié)果為true,只要有一個(gè)內(nèi)容為false,結(jié)果都是false, 可以讀作“并且”
2.||: 或運(yùn)算, 當(dāng)或運(yùn)算的兩個(gè)內(nèi)容都為false的時(shí)候,結(jié)果為false,只要有一個(gè)內(nèi)容為true,結(jié)果都是true,|| 可以讀作“或者”
3.!: 非運(yùn)算, 取反運(yùn)算,當(dāng)內(nèi)容為true時(shí),取反結(jié)果為false,當(dāng)內(nèi)容為false時(shí),取反結(jié)果為true
補(bǔ)充:
與||的其他用法
如果兩個(gè)操作數(shù)都不是布爾類型
且兩個(gè)數(shù)值轉(zhuǎn)換成布爾類型都是true,返回第二個(gè)操作數(shù)
如果有一個(gè)操作數(shù)轉(zhuǎn)換成布爾類型是false,返回這個(gè)數(shù)
var b=undefinednull
console.log(b);
返回undefined
||
如果兩個(gè)操作數(shù)都不是布爾類型
第一個(gè)數(shù)轉(zhuǎn)換成布爾類型為true,則不往下看,返回第一個(gè)數(shù)
如果第二個(gè)數(shù)轉(zhuǎn)換成布爾類型為true,則返回第二個(gè)數(shù)值。
比較運(yùn)算符:
== 相等操作符
如果兩個(gè)操作數(shù)相等,則返回 true。
!= 不相等操作符
如果兩個(gè)操作數(shù)不相等,則返回 true。
這兩個(gè)操作符都會(huì)先轉(zhuǎn)換操作數(shù)(通常稱為強(qiáng)制轉(zhuǎn)型),然后再比較它們的相等性。在轉(zhuǎn)換不同的數(shù)據(jù)類型時(shí),相等和不相等操作符遵循下列基本規(guī)則:
1、 如果有一個(gè)操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值——false 轉(zhuǎn)換為 0,而true 轉(zhuǎn)換為 1;
2、如果一個(gè)操作數(shù)是字符串,另一個(gè)操作數(shù)是數(shù)值,在比較相等性之前先將字符串轉(zhuǎn)換為數(shù)值;
3、 如果一個(gè)操作數(shù)是對象,另一個(gè)操作數(shù)不是,則調(diào)用對象的 valueOf()方法,用得到的基本類型值按照前面的規(guī)則進(jìn)行比較;
這兩個(gè)操作符在進(jìn)行比較時(shí)則要遵循下列規(guī)則。
1、 null 和 undefined 是相等的。
2、 要比較相等性之前,不能將 null 和 undefined 轉(zhuǎn)換成其他任何值。
3、 如果有一個(gè)操作數(shù)是 NaN,則相等操作符返回 false,而不相等操作符返回 true。重要提示:
即使兩個(gè)操作數(shù)都是 NaN,相等操作符也返回 false;因?yàn)榘凑找?guī)則, NaN 不等于 NaN。
如果兩個(gè)操作數(shù)都是對象,則比較它們是不是同一個(gè)對象。如果兩個(gè)操作數(shù)都指向同一個(gè)對象,
則相等操作符返回 true;否則,返回 false。
下表列出了一些特殊情況及比較結(jié)果:
=== 全等操作符
在兩個(gè)操作數(shù)未經(jīng)轉(zhuǎn)換就相等的情況下返回 true。即數(shù)值和類型都相同。
var result1 = ("55" == 55); //true,因?yàn)檗D(zhuǎn)換后相等
var result2 = ("55" === 55); //false,因?yàn)椴煌臄?shù)據(jù)類型不相等
!== 不全等操作符
在兩個(gè)操作數(shù)未經(jīng)轉(zhuǎn)換就不相等的情況下返回 true。數(shù)據(jù)類型不同就不等。
var result1 = ("55" != 55); //false,因?yàn)檗D(zhuǎn)換后相等
var result2 = ("55" !== 55); //true,因?yàn)椴煌臄?shù)據(jù)類型不相等
賦值運(yùn)算符:
=,+=,-=,*=,/=
簡單的賦值操作符由等于號(=)表示,其作用就是把右側(cè)的值賦給左側(cè)的變量。
如果在等于號(=)前面再添加乘性操作符、加性操作符或位操作符,就可以完成復(fù)合賦值操作。
num = num + 10; 等同于num += 10;
設(shè)計(jì)這些操作符的主要目的就是簡化賦值操作。使用它們不會(huì)帶來任何性能的提升。
三元運(yùn)算符:
? :
舉個(gè)例子:
var max = (num1 num2) ? num1 : num2;
在這個(gè)例子中, max 中將會(huì)保存一個(gè)最大的值。這個(gè)表達(dá)式的意思是:如果 num1 大于 num2(關(guān)系表達(dá)式返回 true),則將 num1 的值賦給 max;如果 num1 小于或等于 num2(關(guān)系表達(dá)式返回 false),則將 num2 的值賦給 max。
位運(yùn)算符:
JavaScript也有位運(yùn)算符,需要先轉(zhuǎn)換成16進(jìn)制數(shù)進(jìn)行運(yùn)算,在開發(fā)中好像還沒有用到過,了解一下即可。
javascript 中運(yùn)算符優(yōu)先級
面向?qū)ο笕筇卣鳎悍庋b、繼承、多態(tài)
基于封裝,引出了js如何創(chuàng)建對象(class、function、原型+閉包創(chuàng)建私有變量等)。這個(gè)java和js都差不多
基于繼承,引出了js繼承的一些知識點(diǎn),如extends、super、重寫重載、abstract(typescript)、interface(typescript)。js主要是基于原型繼承,而java主要是基于extends
多態(tài)存在的三個(gè)必要條件。重寫(繼承)、重載、向上轉(zhuǎn)型:其中重寫,js支持。重載js不支持,可以通過額外處理來支持向上轉(zhuǎn)型,因?yàn)閖s是弱類型語言,不支持?jǐn)?shù)據(jù)類型,ts支持(編譯階段)
也就是說對于多態(tài)的支持,目前js只支持一種。
總的來說 js的面向?qū)ο笾С诌€沒有java語言那么豐富嚴(yán)謹(jǐn),正是因?yàn)檫@些寬松語法,也讓js變得更加有趣。但是面向?qū)ο髈op的思想是一致的。因?yàn)閛op思想不是固定語言的特性,而是一種思想。隨著js不斷的更新迭代,相信其語法特性也更加豐富和嚴(yán)謹(jǐn)。
后話:js目前的發(fā)展趨勢,好像不在跟隨傳統(tǒng)語言的oop,有點(diǎn)往函數(shù)式編程的路上轉(zhuǎn)向
JS = Jian Shang,奸商,現(xiàn)在國內(nèi)JS基本分為三種:
1.瞎要價(jià),能蒙一個(gè)算一個(gè)的。(能用垃圾蒙的堅(jiān)決用垃圾蒙)
2.直接用垃圾坑人的,價(jià)格只有更低,沒有最低的(不排除用垃圾賣高價(jià)賺黑心錢的)、
3、瞎要價(jià),信誓旦旦鐵保絕對的好機(jī),然后就獅子大開口。(遇到行情不懂的,或者似懂非懂的基本可以忽悠了)。
不排除,第三種類型的商家走的是良商的路線,固然很好?,F(xiàn)在大部分論壇的商家基本都在樹立自己的良好形象,說明商家基本發(fā)現(xiàn)做JS的路現(xiàn)在太難走了,錢越來越難賺了不說,還壞了自己的名聲。 所以不如說這是JS們在戰(zhàn)略上的轉(zhuǎn)型,同樣是為了達(dá)到謀取暴力,打出各種噱頭來忽悠大眾。我調(diào)查過黑莓同樣功能,檔次的機(jī)型(山寨機(jī)除外)黑莓的報(bào)價(jià)是出奇的高。曾今我看中過黑莓的一款機(jī)型,然后對比了一款功能差不多諾記行貨。(注:黑莓的水貨價(jià)和諾記的行貨價(jià)進(jìn)行的比較)結(jié)果黑莓價(jià)格是相當(dāng)?shù)母?!基本上功能差不多的產(chǎn)品價(jià)格上不會(huì)太大誤差,除非是什么奢華的定制機(jī),或限量版。低端BB的價(jià)格現(xiàn)在已盡很透明了,所以現(xiàn)在JS基本看好高端BB。
在此提醒廣大BBER,買BB的時(shí)候多多的進(jìn)行同等配置的不同商品的對比,不要讓奸商在價(jià)格上忽悠了,他就是再好的貨,能值多少錢,自己先掂量下,調(diào)查清楚了再買。不要聽他打著質(zhì)量鐵保的旗號,在價(jià)格上把你坑了,除非你認(rèn)為錢無所謂,只要質(zhì)量好就行。
方法主要有三種
轉(zhuǎn)換函數(shù)、強(qiáng)制類型轉(zhuǎn)換、利用js變量弱類型轉(zhuǎn)換。
1. 轉(zhuǎn)換函數(shù):
js提供了parseInt()和parseFloat()兩個(gè)轉(zhuǎn)換函數(shù)。前者把值轉(zhuǎn)換成整數(shù),后者把值轉(zhuǎn)換成浮點(diǎn)數(shù)。只有對String類型調(diào)用這些方法,這兩個(gè)函數(shù)才能正確運(yùn)行;對其他類型返回的都是NaN。
2. 強(qiáng)制類型轉(zhuǎn)換
還可使用強(qiáng)制類型轉(zhuǎn)換(type casting)處理轉(zhuǎn)換值的類型。使用強(qiáng)制類型轉(zhuǎn)換可以訪問特定的值,即使它是另一種類型的。
ECMAScript中可用的3種強(qiáng)制類型轉(zhuǎn)換如下:
Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型;
Number(value)——把給定的值轉(zhuǎn)換成數(shù)字;
String(value)——把給定的值轉(zhuǎn)換成字符串。
用這三個(gè)函數(shù)之一轉(zhuǎn)換值,將創(chuàng)建一個(gè)新值,存放由原始值直接轉(zhuǎn)換成的值。這會(huì)造成意想不到的后果。當(dāng)要轉(zhuǎn)換的值是至少有一個(gè)字符的字符串、非0數(shù)字或?qū)ο髸r(shí),Boolean()函數(shù)將返回true。如果該值是空字符串、數(shù)字0、undefined或null,它將返回false。
3. 利用js變量弱類型轉(zhuǎn)換