js基礎知識

JS的組成

? ? ? ? ECMAScript(ES) : 負責翻譯,為js的核心,解釋器。

????????DOM?(Document Object Model 文檔對象模型):賦予js操作HTML的能力,document。

????????BOM?(Browser Object Modal 瀏覽器對象模型):賦予js操作瀏覽器的能力,window,不兼容不建議使用。

變量類型?

? ? ? ?5種基本類型:unll,undefined,boolean,number,string

?????? 1種復雜類型:object

?????? 5種引用類型:Array,Object,F(xiàn)unction,Date,RegExp

?????? 3種基本包裝類型:Boolean,Number,String

?????? 2種單體內(nèi)置對象:Global,Math

?????? undefined:沒有定義的變量,var聲明沒有初始化的變量

? ? ? ?typeof?可查看變量類型,一個變量應只存一個類型的數(shù)據(jù)。

var a = 12;

// console.info(typeof a);? ? ? ? number

a = 'dwefeyui';

// console.info(typeof a);? ? ? ? string

a = true;

// console.info(typeof a);? ? ? ? boolean

a = function(){

? ? console.info('frgctgy');

};

// console.info(typeof a)? ? ? ? function

a = document;

// console.info(typeof a);? ? ? ? object

var b;

// console.info(typeof b);? ? ? ? undefined

// 1.真的未定義

// 2.雖然定義但是沒有給東西

顯式類型轉換(強制類型轉換)

????parseInt()?可將字符串轉換為數(shù)字(整數(shù)),parseFloat()可將字符串轉換為數(shù)字(小數(shù));

? ? var a = 'abc',?b = '20.5632';

? ? // console.info(parseInt(a)); ? ? ?NaN ? ?

? ? // console.info(parseInt(b)); ? ? ?20

? ? var a = '3.5';?

? ??console.info(parseFloat(a));? ? ? ?//3.5

? ? isNaN()?判斷該元素是否為NaN,NaN表示(Not a Numer),兩個NaN之間不相等;

隱式類型轉換

雙等?==? 先轉換類型,再進行比較;(值相等,等式成立)

三等===? ?不轉換類型,直接比較;(值和類型必須相等,等式成立)

? ? ? ? var a = 5;

? ? ? ? var b = '5';

? ? ? ? // console.info(a==b); ? ? ?true

? ? ? ?//??console.info(a===b); ? ? //false

???減法也可做隱式類型轉換,但加法不行。

? ? ? ? var a = '12';

? ? ? ? var b = '5';

? ? ? ? // console.info(a+b); ? ?//125

? ? ? ? // console.info(a-b); ? ? ? //7

變量作用域

???????局部變量:只能在定義他的函數(shù)里面使用;

???????全局變量:在任何地方都能用;

? ? ? ?閉包:子函數(shù)可以使用父函數(shù)的局部變量。

? ? ? ?匈牙利命名法:類型前綴(僅給變量取名時需要),首字母大寫?

運算符

?????? +加、-減、*乘、/除,%求模(余數(shù))。(隔行變色,秒轉時間)

賦值

??????? =、+=、-=、*=、/=、%=。(i+=1等效于i=i+1)

邏輯

?????? &&并且、||或者、!否;運算優(yōu)先級:括號;

程序流程控制

????????判斷:if、switch、?:三元目()運算符

? ? ?switch (變量) {

? ? ? ?? ?case 值1:

? ? ? ? ? ? 語句1 ;

? ? ? ?? ??? ?break;

? ? ? ? case 值2:

? ? ? ? ? ? 語句2;

? ? ? ?? ??? ?break;

? ? ? ?? ?default:

? ? ? ?? ??? ?語句n;

? ? ? ?? ??? ?break;

? ? ? };

? ? ? 條件?語句1:語句2;

?循環(huán):for、while;跳出:break(中斷整個循環(huán))、continue(中斷本次循環(huán));

? ? ? ?真和假

???????真(true):非0數(shù)字、非空字符串、非空對象

???????假(false):數(shù)字0、空字符串、null(空對象)、undefined

? ? ? ?JSON

???????和數(shù)組的區(qū)別:數(shù)組用 [ ],下標為數(shù)字,有l(wèi)ength,故循環(huán)時采用0 - length這種方法;

????????????????????????????? JSON用 { },下標為字符串,沒有l(wèi)ength,故循環(huán)時用for in這種方法;

? ? ? ? var json = {

? ? ? ? ?? ?a:12,

? ? ? ? ?? ?b:5,

? ? ? ? ?? ?c:'afy'

? ? ? ? };

? ? ? ? var arr = [12,5,'add'];

? ? ? ??//json.a++ ? ? ? ? //可像變量一樣操作

? ? ? ? console.info(json.a);?

? ? ? ?for(var i = 0;i<arr.length;i++){? ? ? ? ?

? ? ? ? ? ? ? ? console.info('第' + i + '個東西' + json[i]);

? ? ? ?} ? ??

? ? ?for(var i in json){

? ? ? ? ? ? ? ? console.info('第' + i + '個東西' + json[i]);

??????}

JS深入

函數(shù)返回值

? 將函數(shù)返到函數(shù)外面,為函數(shù)的執(zhí)行結果,可做運算,一個函數(shù)應該只返回一種值。

? ? ? ? function show(a,b){

? ? ? ? ?? ?return a + b;

? ? ? ? }

? ? ? ? console.info(show(3,5));??

函數(shù)傳參

????????arguments?[ ] (可變參,不定參):參數(shù)個數(shù)可變,為一個數(shù)組。

??????? css中傳兩個參數(shù)為獲取樣式,三個參數(shù)為設置樣式,一般給參數(shù)取名,增加可讀性。

? ? ? ? function css (obj,name,value){

? ? ? ? ?? ?if(arguments.length == 2){ ? ? ?//獲取

? ? ? ? ? ? ? ? ?return obj.style[name]; ? ?

? ? ? ? ? ? ? ? ?//obj==arguments[0],以此類推

? ? ? ? ?? ?}else{

? ? ? ? ?? ??? ?obj.style[name] = value;

? ? ? ? ?? ?}?

? ? ? ? }

? ? ? ? window.onload = function(){

? ? ? ? ?? ?var oDiv = document.getElementById('div1');

? ? ? ? ?? ?// alert(css(oDiv,'width'));

? ? ? ? ?? ?css(oDiv,'background','green');

? ? ? ? }

getComputedStyle ()?用于獲取非行間樣式(FireFox、Chrome、Safari)、

currenStyle ()? ?也可(IE、Opera),style用于獲取行間樣式。兼容性問題通常用if else處理

? ? ? ? <style>

?? ??? ?#div1{

?? ??? ??? ?width: 200px;

?? ??? ?}

?? ?</style>

?? ?<script>

? ? ? ? window.onload = function(){

? ? ? ? ?? ?var oDiv = document.getElementById('div1');

? ? ? ? ?? ?console.log(getComputedStyle(oDiv, false).width)

? ? ? ? ? ?}

? ? ? ? ?</script>

函數(shù)封裝

? 將需要多次用到的函數(shù)進行封裝方便調用。

? ? ? ? function getStyle(obj,name){ ? ? ? ? ? ? ? //封裝

? ? ? ? ?? ?if(ojb,currentStyle){

? ? ? ? ?? ??? ?return obj.currentStyle[name];

? ? ? ? ?? ?}else{

? ? ? ? ?? ??? ?return obj.getComputedStyle(obj, false)[name];

? ? ? ? ?? ?}

? ? ? ? }

? ? ? ? window.onload = function(){

? ? ? ? ?? ?var oDiv = document.getElementById('div1');

? ? ? ? ?? ?alert(getStyle(oDiv,'width'));

? ? ? ? }

上述getStyle()只能用于取單一的樣式,如:width,height;無法取出border等含有多個元素的樣式,

需寫成border-color等樣式。

數(shù)組基礎

???有兩種寫法,一般采用第一個

? ? var a = [1,2,3];

? ? var a = new Array(1,2,3);

?屬性:length,可以用于獲取數(shù)組長度,也可設置,一個數(shù)組中應該只存一種數(shù)據(jù)類型。

?????????添加,刪除元素:push(),從尾部添加;unshift(),從頭部添加;pop(),從尾部刪除;shift(),從頭部刪除;

?????????刪除?splice(起點,長度);插入/替換 splice(起點,長度,元素)。

?? ?var arr = [1,2,3,4,5,6];

?? ?// arr.splice(2,3);

?? ?arr.splice(2,0,'a','b');?

?? ?console.info(arr);

???數(shù)組連接:concatt ( );?分隔符:join ( ) ;

? ? ? ? var a = [1,2,3];

? ? ? ? var b = [4,5,6];

? ? ? ? console.info(a.concat(b));


?? ?var arr = [1,2,3,4,5,6];

?? ?console.info(arr.join('--'));

數(shù)組排序:sort ( ) ,但通常將數(shù)組當做字符串來比較,導致排序數(shù)字時亂序。

?? ?var arr = [465,255,30,66,5,67];

?? ?arr.sort(function(n1,n2){ ? ? //比較函數(shù) ? ?

? ? ? ? ? ? ?return n1-n2;

? ? ? ? });

? ?consoel.info(arr);

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容