摘要:邏輯運(yùn)算判斷一個(gè)變量會被當(dāng)做還是內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,直接可以調(diào)用開發(fā)。根據(jù)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。
變量類型和計(jì)算
1. 變量類型
js變量類型分為基本類型(或者叫值類型)和引用類型。(按照存儲方式區(qū)分)
? 值類型
值類型:Number、String、Boolean、Null、Undefiend;這5種基本數(shù)據(jù)類型是按值訪問的,可以操作保存在變量中的實(shí)際的值。
對于值類型,在復(fù)制變量的時(shí)候,會在新的變量上創(chuàng)建一個(gè)新值,這個(gè)新值和原值是相互獨(dú)立的,比如下面的例子:
var a=100; var b=100; a=200; console.log(b); //100
? 引用類型
引用類型值是保存在變量中的對象;引用類型值就是指對象。
保存引用類型值的變量,實(shí)際上保存的是一個(gè)指向該對象的指針。
當(dāng)復(fù)制保存著對象的某個(gè)變量時(shí),復(fù)制的其實(shí)是指針;復(fù)制操作結(jié)束后,兩個(gè)變量指向同一個(gè)對象。
對于引用類型值,可以為其添加屬性和方法,也可以修改或者刪除其屬性和方法。
在為對象添加屬性和方法時(shí),操作的是實(shí)際的對象,因此,改變?nèi)魏我粋€(gè)變量,都會影響另外一個(gè)變量。比如下面的例子:
var a={age:100}; var b=a; b.age=20; console.log(a.age); //20
注意: 基本類型值之間的比較,只是單純的值的比較。
引用類型值的比較并非值的比較:即使兩個(gè)對象包含相同的屬性和值,它們也是不相等的;各個(gè)索引元素完全相等的兩個(gè)數(shù)組也不相等。
引用類型值的比較是引用的比較,當(dāng)且僅當(dāng)它們引用同一個(gè)對象時(shí),它們才相等。
? typeof 運(yùn)算符詳解
由下面的例子,我們可以看出typeof只能判斷值類型的變量,不能判斷引用類型的變量,所以不能準(zhǔn)確的判斷變量類型。
typeof(undefined); // undefined typeof("abc"); // string typeof(123); // number typeof(true); // boolean typeof({}); // object typeof([]); // object typeof(null); // object typeof(console.log); // function
2. 變量計(jì)算
? 強(qiáng)制類型轉(zhuǎn)換
以下四種情況會發(fā)生強(qiáng)制類型的轉(zhuǎn)換:
字符串的拼接
var a=100+10; // 100 var b=100+"10"; // "10010"
==運(yùn)算符
console.log((100=="100")); // true console.log((0=="")); //true console.log((null==undefined)); // true
在使用==得時(shí)候會強(qiáng)制類型轉(zhuǎn)換,而使用===的時(shí)候不會發(fā)生強(qiáng)制類型轉(zhuǎn)換。
==計(jì)算要慎用,會出現(xiàn)上述問題,如果使用===,則不會出現(xiàn)上述問題。
判斷對象的一個(gè)屬性存在可以使用如下語法:
var obj = {} if(obj.name == null){...} // 相當(dāng)于obj.name === null || obj.name === undefined /* 該方法只適用于判斷對象的屬性,不能用于直接判斷變量是否存在 */ if(someVal){...} // 這里瀏覽器會報(bào)錯(cuò)
if語句
如下例子,if()判斷中會對()里的值進(jìn)行強(qiáng)制轉(zhuǎn)換為布爾類型。if()條件判斷中0、""、NaN、null、undefined、false都會轉(zhuǎn)為false。
var b=100; if(b){ // ... }
邏輯運(yùn)算
console.log((10 && 0)); // 0 console.log(("" || "abc")); //"abc" console.log((!window.abc)); // true // 判斷一個(gè)變量會被當(dāng)做 true 還是 false var a=100; console.log(!!a); // true
3.JS內(nèi)置函數(shù)和對象
js中內(nèi)置了一些函數(shù)和對象,直接可以調(diào)用開發(fā)。
根據(jù)ECMAscript提供的內(nèi)置函數(shù)包括Object、Array、Boolean、Number、String、Function、Date、Regexp和Error。內(nèi)置對象包括Math和JSON。
注意:javascript基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像Window、Navigator那是瀏覽器提供給我們的。還有一點(diǎn)前面的集中都是內(nèi)置函數(shù)而不是內(nèi)置對象,最后的Math和JSON是內(nèi)置對象
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/93644.html
摘要:好程序員前端培訓(xùn)入門之基礎(chǔ)知識梳理匯總,前端工程師是當(dāng)前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯(cuò)。作用域鏈的前端,始終是當(dāng)前執(zhí)行代碼所在環(huán)境的變量對象。 好程序員Web前端培訓(xùn)入門之JS基礎(chǔ)知識梳理匯總,Web前端工程師是當(dāng)前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯(cuò)。不論是專業(yè)還是非專業(yè),有基礎(chǔ)亦或是無基礎(chǔ),都想通過學(xué)習(xí)Web前端實(shí)現(xiàn)高薪就業(yè)。不過,學(xué)習(xí)要一...
摘要:好程序員前端培訓(xùn)入門之基礎(chǔ)知識梳理匯總,前端工程師是當(dāng)前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯(cuò)。作用域鏈的前端,始終是當(dāng)前執(zhí)行代碼所在環(huán)境的變量對象。 好程序員Web前端培訓(xùn)入門之JS基礎(chǔ)知識梳理匯總,Web前端工程師是當(dāng)前各大企業(yè)都比較稀缺的人才,薪資待遇和就業(yè)前景都很不錯(cuò)。不論是專業(yè)還是非專業(yè),有基礎(chǔ)亦或是無基礎(chǔ),都想通過學(xué)習(xí)Web前端實(shí)現(xiàn)高薪就業(yè)。不過,學(xué)習(xí)要一...
摘要:個(gè)人前端文章整理從最開始萌生寫文章的想法,到著手開始寫,再到現(xiàn)在已經(jīng)一年的時(shí)間了,由于工作比較忙,更新緩慢,后面還是會繼更新,現(xiàn)將已經(jīng)寫好的文章整理一個(gè)目錄,方便更多的小伙伴去學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000017490740?w=1920&h=1080); 個(gè)人前端文章整理 從最開始萌生寫文章的想法,到著手...
摘要:內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,很多語言都會有內(nèi)置的方法,直接可以調(diào)用開發(fā)。根據(jù)語法標(biāo)準(zhǔn)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。強(qiáng)制類型轉(zhuǎn)換大家應(yīng)該都知道。 js基礎(chǔ) - 變量 *大家對js一定不會陌生,入門很簡單(普通入門),很多人通過網(wǎng)絡(luò)資源、書籍、課堂等很多途徑學(xué)習(xí)js,但是有些js基礎(chǔ)的只是往往被大家遺漏,本章就從js變量...
閱讀 3096·2021-11-24 09:39
閱讀 2354·2021-10-08 10:05
閱讀 2887·2021-09-24 13:52
閱讀 1670·2021-09-22 15:07
閱讀 654·2019-08-30 15:55
閱讀 1865·2019-08-30 15:53
閱讀 747·2019-08-30 15:44
閱讀 3186·2019-08-30 11:20