JavaScript(類型轉換、條件語句、循環、函數)

類型裝換

轉爲數字類型

// Number
console.log(Number(undefined));  //NaN
console.log(Number(null));  //0
        
console.log(Number(true));  // 1
console.log(Number(false)); // 0
        
console.log(Number('123'));  //123
console.log(Number('123a')); //NaN
console.log(Number('1.23'));  // 1.23
console.log(Number('+123'));  //123
console.log(Number('-123'));  // -123
console.log(Number('1+23'))  // NaN
console.log(Number(''));  // 0
console.log(Number('  '));  // 0
console.log(Number('1   23'));//  NaN
console.log(Number('1$%23'));  // NaN
console.log(Number('  123')); //123
console.log(Number('1.2.3')); // NaN
console.log(Number('.23'));  // 0.23

// parseInt() 會試圖將字符串轉爲整型,若是失敗 返回NaN
// 若是前面是空格 數字正負號時, 當碰到 第一個不是數字時中止裝換
// 若是不是數字空格直接返回NaN
console.log(parseInt(undefined));  //NaN
console.log(parseInt(null));  //  NaN
        
console.log(parseInt(true));  // NaN
console.log(parseInt(false)); // NaN
        
console.log(parseInt('123'));  //123
console.log(parseInt('123a')); // 123
console.log(parseInt('1.23'));  // 1
console.log(parseInt('+123'));  //123
console.log(parseInt('-123'));  // -123
console.log(parseInt('1+23'))  // 1
console.log(parseInt(''));  // NaN
console.log(parseInt('  '));  // NaN
console.log(parseInt('1   23'));//  1
console.log(parseInt('1$%23'));  // 1
console.log(parseInt('  123')); //123
console.log(parseInt('1.2.3')); // 1
console.log(parseInt('.123'))  //NaN

// parseFloat 與parseInt沒有太大區別 除了如下幾條
console.log(parseFloat('1.23'));  // 1.23
console.log(parseFloat('1.2.3')); // 1.2
console.log(parseFloat('.123'))  // 0.123

轉爲String 類型

// undefined null boolean 轉爲String類型

var a = undefined + '';
console.log(typeof a);  // string

var b = null + '';
console.log(typeof b); // string

var c = true.toString();
console.log(typeof c);

var num = 20;
var d = num.toString();
console.log(d);  // 在瀏覽器控制檯中字符類型是黑色的 數字是藍色的

其餘類型轉爲Boolean類型

console.log(Boolean(''));           // false
console.log(Boolean(undefined));    // false
console.log(Boolean(null));         // false
console.log(Boolean(0));            // false
console.log(Boolean(0.0));          // false
console.log(Boolean(NaN));          // false
        
console.log(Boolean(' '));          // true
console.log(Boolean(1));            // true
console.log(Boolean('abc'));        // true

isNaN and isFinite

console.log(isNaN(NaN));        // true
console.log(isNaN('NaN'));      // true
console.log(isNaN(123));        // false
        
// isFinite: 判斷既不是NaN類型 也不是InFinite類型
console.log(isFinite(123))          // true
console.log(isFinite(NaN));         // false
console.log(isFinite(Infinity));    // false
console.log(isFinite(' '))          // true
console.log(isFinite('123 '))       // true
console.log(isFinite('123abc'))     // false

條件語句

  • if 語句
  • 三目運算符 res = a>b?true:false (運行效率比if語句高)
  • switch語句
    • default break 都是可選語句了,當 case 後面沒有 break 語句時,若是條件匹配成功,直接貫穿全部 case 語句,直到執行 break 語句

循環語句

  • while瀏覽器

  • do while函數

  • forcode

    for(var i = 0; i < array.lenght; i++)
    for(var i in array) // i 是下標
    for(var i of array) // i 是元素

break and continue

// js中循環是能夠有名字的
// 語法格式   名稱:循環語句
// break continue 能夠跳過或終止 帶有標籤名的循環
        
label1 : for(var i =  0; i < 10; i++){
    label2 : for(var j = 0; j < 10; j++){
        if(j == 3){
            break label1;
        }
        console.log(i + '  ' + j);
    }
}

函數

函數的概述

  • 函數名:建議使用駝峯規則
  • 若是不寫 return,系統默認返回 undefined
  • 函數在調用時只要有該函數的聲明便可

函數的參數

function info(name, age) {
    document.write(name);
    document.write(age);        
}
info('lily', '9'); // lily 9
info('lily');  // lily undefined
info('lily','9','c','d')  // lily 9
        
// js不定長參數
function printSum(){
    sum = 0;
    for(i in arguments)
        sum += arguments[i];
    return sum    
}
console.log(printSum(1,2,3))

做用域

  • 新的做用域:函數會產生新的做用域,循環,條件語句不會產生新的做用域
  • 變量做用域
    • 全局變量:定在文件中,但在函數外的變量爲全局變量,使用範圍爲整個文件的任意位
    • 局部變量:在函數內部使用var聲明的變量爲局部變量,使用範圍爲該函數內部

變量的提高

var num = 100;
/*
 * 在js中若是函數內部使用var聲明變量時,在代碼執行過程當中,系統
 * 會自動把變量的聲明語句(var )提到函數的最上方,這個操做叫作變量的提高
 * */
function fun1 () {
    console.log(num);  // undefined
    num = num +1
    console.log(num);  // NaN   undefined + 1 = NaN
    var num = 200
    console.log(num);  // 200    
}
fun1();

參數默認值

// 定義一個函數,該函數有兩個參數
// 參數的默認值
// 第一種方式: 在定義形參時,直接賦值
// 第二種方式: a = a||555;
// 第三種方式: a = a ? a : 333
function func2(a, b=999){
    // a = a||555;
    a = a ? a : 333
    console.log(a);
    console.log(b);
}
func2(1,2);
func2(4);
func2();

匿名函數

// 非即時函數
var a = function(num){
    console.log(num);
};
a(1233);


// 即時函數
(function(num){
    console.log(num);
})(666);

// 通常來講,匿名函數當作一次性函數使用,調用一次結束後,
// 通常狀況下會把匿名函數做爲即時函數,可是任何函數均可以
// 即時執行


// 普通函數形式的即時函數
/*(function abc(){
    alert('123')
})();*/
相關文章
相關標籤/搜索