1. 程式人生 > >JavaScript深入

JavaScript深入

流程控制

var a = 10;
if (a>5){
    console.log('大於5');
}else {
    console.log('小與5');
}
//大於5
if-else
var a = 10;
if (a>5){
    console.log('a>>>5');
}else if(a<5){
    console.log('a<<<5');
}else {
    console.log('a===5');
}
//a>>>5   換行shift+ctrl
if-else if-else
var day = new Date().getDay();
switch (day){
    case 0:
    console.log('Sunday');
    break;
    case 1:
    console.log('Monday');
    break;
    default:
    console.log('自己去看');
}
//Monday 根據星期幾去選擇輸出內容,先得到本地日期,然後case週一到週日
//switch中的case子句通常都會加break語句,否則程式會繼續執行後續case中的語句。
switch
for (var i=0;i<10;i++){
    console.log(i);
}
// 定義一個i=0,條件是如果i<10,那麼i++(自加),輸出i,如果i>=10,則結束
//0123456789
for
var i = 0;
while(i<10){
    console.log(i);
    i++;
}
//定義一個i=0,while+(條件){結果}
//0123456789
while
var a = 1;
var b = 2;
var c = a>b?a:b;
//定義a,b,如果a>b輸出a,否則輸出b(?:) //a = 1 //b = 2 //c = a if a > b else b
三元運算
函式
JavaScript中的函式和Python中的非常類似,只是定義方式有點區別。
//普通函式定義
function func(){
    console.log('Baby');
}
func();
//Baby
//function+函式名(){函式內容}

//帶引數的函式
function func2(a,b){
    console.log(arguments);  
    console.log(arguments.length);  //內建的arguments物件,檢視傳入引數的長度
    console.log(a,b);
}
func2(1,2,3,4,5,6,7);   // 7     1  2  傳再多值也只會顯示兩個
func2(1);   // 1    1  undefined  只傳入一個值則會自動傳入一個undefined
func2([1,2,3,4,5,6,7]);  //1    [1,2,3,4,5,6,7] undefined
//不傳值則會傳入兩個undefined

//帶返回值的函式
function sum(a, b){
    return a+b;
}
sum(1,2)     //3

//匿名函式
var sum = function(a,b){
    return a+b;
}
sum(1,2);
//3   匿名函式沒有函式名,直接開始

//立即執行函式
(function(a,b){
    return a+b;
})(1,2);
//3 打完之後立即執行把函式放在括號裡

//ES6中允許使用“箭頭”(=>)定義函式。
var f = v => v;
// 等同於
var f = function(v){
  return v;
}
//如果箭頭函式不需要引數或需要多個引數,就是用圓括號代表引數部分:如果箭頭函式不需要引數或需要多個引數,就是用圓括號代表引數部分:
var f = () => 5;   //()=>5
// 等同於
var f = function(){return 5};   //ƒ (){return 5}
var sum = (num1, num2) => num1 + num2;   //sum(1,2)  3
// 等同於
var sum = function(num1, num2){
  return num1 + num2;
}   //sum(1,2)  3
函式定義
函式的全域性變數和區域性變數
區域性變數:
    在JavaScript函式內部宣告的變數(使用 var)是區域性變數,所以只能在函式內部訪問它(該變數的作用域是函式內部)。只要函式執行完畢,本地變數就會被刪除。

全域性變數:
    在函式外宣告的變數是全域性變數,網頁上的所有指令碼和函式都能訪問它。

變數生存週期:
    JavaScript變數的生命期從它們被宣告的時間開始。
    區域性變數會在函式執行以後被刪除。
    全域性變數會在頁面關閉後被刪除。
作用域
    首先在函式內部查詢變數,找不到則到外層函式查詢,逐步找到最外層。
var city = "BeiJing";
function f() {                 //2
  var city = "ShangHai";  //3
  function inner(){           //4
    var city = "ShenZhen";   //5
    console.log(city);          //6  此時city='shenzhen'
  }
  inner();
}
f();    //1
//shenzhen  

var city='beijing';
function Bar(){    //6
    console.log(city);   //7 沒有city,向上找,city='beijing'
}
function f(){            //3
    var city='shanghai';   //4
    return Bar;     //5
}
var ret = f();    //2
ret();   //1
//beijing

var city='beijing';
function f(){     //3
    var city='shanghai';   //4   //7
    function inner(){   //5
        console.log(city);    //6
    }
    return inner;  //8
}
var ret = f();    //2
ret();    //1
//shanghai
尋找變數示例