JS語法: Javascript基本數據類型:undefined/null/Boolean/number/string 複雜數據類型:object typeof用來檢測變數的數據類型 typeof的使用方法有兩種: (1)typeof 變數 (2) typeof(變數) undefined派生自nu ...
JS語法:
Javascript基本數據類型:undefined/null/Boolean/number/string
複雜數據類型:object
typeof用來檢測變數的數據類型
typeof的使用方法有兩種:
(1)typeof 變數
(2) typeof(變數)
undefined派生自null,所以undefined==null返回的結果是true
用於任何數據類型,Number()可以將非數值轉化為數值,但是有一些數據是不能轉化為數值的,如果這類數據通過Number()進行強制轉化的話,會返回NaN
var a=Number(name_01);
用於把字元串轉換為數值
var b=parseInt("28px") var d=parseFloat("12.34.56px");
不知道值是不是null或者undefined,可以使用String(),可以將任何類型的值轉為字元串
var idstr=ids.toString(); console.log(String(m));
在運算中,除了加法,其餘的運算都會將字元串先轉換為數字之後再進行計算,但是兩個數據相加,如果有一方是字元串的話,加號的作用就是將他們進行拼接
如: 數字5和字元串"5"進行加減乘除運算,結果分別是:55 0 25 1
&&邏輯與:
如果第一個操作數隱式轉換後為true,則返回第二個操作數;
如果前面的都為true,則返回最後一個操作數。
如果第一個操作數隱式轉換後為false,則返回第一個操作數;
如果有一個是null,則返回null;
如果有一個是undefined,則返回undefined;
如果有一個是NaN,則返回NaN
||邏輯或:
如果第一個操作數隱式轉換為true,則返回第一個操作數;
如果第一個操作數隱式轉換為false,則返回第二個操作數,依次往後;
如果兩個數都是null,則返回null;
如果兩個數都是undefined,則返回undefined;
如果兩個數都是NaN,則返回NaN;
!邏輯非
無論如何都會返回一個布爾值
!!對邏輯非的結果再求反;
JS流程式控制制語句:
var age=prompt("請設置您的密碼"); if(age<18){ alert("您還沒有成年"); }else{ alert("您已成年,請提供您的身份證號"); } if(age.length!=6){ alert("請輸入6位數字密碼"); }else{ if(isNaN(age)){ alert("密碼必須是6位數字"); }else{ alert("密碼設置正確"); } }
NaN也是一個number類型的一種,typeof NaN==number
var week=new Date().getDay(); var weekstr=""; console.log(week); // 0-6 // 多條件的判斷 switch switch(week){ case 0: weekstr="日"; break; // 退出 case 1: weekstr="一"; break; case 2: weekstr="二"; break; case 3: weekstr="三"; break; case 4: weekstr="四"; break; case 5: weekstr="五"; break; default: weekstr="六"; } document.write("今天是星期"+weekstr);
for迴圈嵌套:
外層為假時內層不執行;
先執行外層,再執行內層;當內層為假時再執行外層。
JS函數:
函數執行完return之後立即停止並退出函數。
如果return後面沒有值,預設返回undefined
js非嚴格模式下,可以使用arguments來改變傳入的參數的值
function inner(){ // arguments console.log(arguments.length); console.log(arguments[1]); // 索引是從0開始的正整數 } inner(10,5); function add(num1,num2){ arguments[0]=99; console.log(num1); } add(55,88)
JS內置對象【數組】:
創建數組的兩種方式:
new Array()
字面量方式 []
arr.length 獲取數組長度
過設置length可以從數組的末尾移除項或者添加新項
統計員工工資的代碼:
(1) 不停的接收用戶輸入的員工的工資,直到用戶輸入“退出”便不再彈出“輸入工資”的視窗
(2) 把用戶輸入的數據保存在一個數組中
var input,arr=[]; while(input!='退出'){ input=prompt('請輸入員工工資'); arr[arr.length]=input; } arr.length-=1;//不存入'退出' document.write(arr);
數組的棧方法:
// push從數組末尾加入 var colors=new Array("red","green"); var len=colors.push("blue","yellow","blank"); console.log(len); // unshift從數組頭部加入 var nums=[2,7,8,6]; var size=nums.unshift(99,66); // pop從數組尾部刪除,返回值是被刪除的元素 var n=nums.pop(); console.log(nums); // shift從數組頭部刪除,返回值是被刪除的元素 var m=colors.shift(); console.log(m);
// join 把數組元素轉為字元串 var nums=[2,4,5]; var str=nums.join(); //2,4,5 var words=["border","left","color"]; // border-left-color var wordstr=words.join("-"); console.log(wordstr); // reverse 數組中元素反序 nums.reverse(); console.log(nums); var strs=["a","b","c","d"]; // 返回dcba這個字元串 var newstr=strs.reverse().join("") console.log(newstr); // 29,5,24,17,32 var arr=[9,23,15,-99,88,12,-2]; //sort()對數組元素進行排序,按字元串格式進行排序 var _arr1=[8,95,31,1,5]; console.log(_arr1.sort());//輸出1,31,5,8,95,因為會先將元素轉換為字元串,用字元串的首字元進行比較, //如果第一個字元相同,繼續比較第二個字元 //針對上面的情況,使用以下方法解決 // 降序 return 參數1<參數2 arr.sort(function(a,b){return a<b}); // 升序 return 參數1>參數2 arr.sort(function(a,b){return a>b}); console.log(arr);
var arr1=["a","b","c"], arr2=["d","e",1,3], arr3; // concat 連接兩個或多個數組 arr3=arr1.concat(arr2,["m",99,8]); console.log(arr3); // slice(start,end) end下標 截取數組一部分返回 // 包含start,不包含end // start負數,就是數組長度+該長度 // 如果沒有end,就從start一直到結束 var colors=["red","green","blue","yellow","orange"]; var newColors=colors.slice(1,3); var newColors2=colors.slice(2,4); var newColors3=colors.slice(-4,3); // 1,3 console.log(newColors3);
// 拷貝數組的方法 var a=[1,"yes",3], b; // 1、數組遍歷,push b=new Array(); for(var i=0;i<a.length;i++){ b.push(a[i]); } // 2、concat() b=[].concat(a); // 3、slice(); b=a.slice(0); console.log(b);
//splice返回值是被刪除的項,如果沒有刪除則返回[] var arr=["a","b","c","d","e","f"]; // 刪除,從index開始刪除count個數,返回被刪除的 // splice(index,count) // count為0 則不刪除;count不設置,則從Index開始刪除到最後 var delArr=arr.splice(2,3); // 插入,從index開始,刪除count個,插入item1... // splice(index,count,item1...) var insertArr=arr.splice(3,0,"m","n",88); // 替換 var replaceArr=arr.splice(1,2,"x","y","z"); console.log(arr); console.log(replaceArr);
var nums=[1,7,5,7,8,1,6,9]; //indexOf(seachvalue,startIndex) //返回查找的項在數組中的位置,沒有則返回-1 var pos=nums.indexOf(7,2); //lastIndexOf()從數組末尾開始查找 var pos=nums.lastIndexOf(1); var pos=nums.indexOf("7"); console.log(pos);
indexOf()方法有相容性問題,解決方案:
// 封裝一個方法實現indexOf的功能 function ArrayIndexOf(arr,value){ // 檢測value在arr中出現的位置 for(var i=0;i<arr.length;i++){ if(arr[i]===value){ return i; } } return -1; }