1. 程式人生 > 遊戲攻略 >《寶可夢朱紫》各獎章獲取教程

《寶可夢朱紫》各獎章獲取教程

目錄

JavaScript

一.JavaScript簡介

1.ECMAScript和JavaScript的關係

1996年11月,JavaScript的創造者--Netscape公司,決定將JavaScript提交給國際標準化組織ECMA,希望這門語言能夠成為國際標準。次年,ECMA釋出262號標準檔案(ECMA-262)的第一版,規定了瀏覽器指令碼語言的標準,並將這種語言稱為ECMAScript,這個版本就是1.0版。

該標準一開始就是針對JavaScript語言制定的,但是沒有稱其為JavaScript,有兩個方面的原因。一是商標,JavaScript本身已被Netscape註冊為商標。而是想體現這門語言的制定者是ECMA,而不是Netscape,這樣有利於保證這門語言的開發性和中立性。

因此ECMAScript和JavaScript的關係是,前者是後者的規格,後者是前者的一種實現。

2.JavaScript語言

JavaScript 是指令碼語言

JavaScript 是一種輕量級的程式語言。

JavaScript 是可插入 HTML 頁面的程式設計程式碼。

JavaScript 插入 HTML 頁面後,可由所有的現代瀏覽器執行。

JavaScript 很容易學習。

JavaScript 在剛誕生的時候,它的名字叫 “LiveScript”。但是因為當時 Java 很流行,所以決定將一種新語言定位為 Java 的“弟弟”會有助於它的流行。

隨著 JavaScript 的發展,它已經成為了一門完全獨立的語言,並且也擁有了自己的語言規範 ECMAScript。現在,它和 Java 之間沒有任何關係。

可以在網頁上實現複雜的功能,網頁展現給你的不再是簡單的靜態資訊,而是實時的內容更新,互動式的地圖,2D/3D 動畫,滾動播放的視訊等等

3.HTML、CSS、JavaScript

HTML是一種標記語言,用來結構化我們的網頁內容並賦予內容含義,例如定義段落、標題和資料表,或在頁面嵌入圖片和視訊。
CSS是一門樣式規則語言,可將樣式應用於HTML內容,例如設定背景顏色和字型,在多個列中佈局內容。
JavaScript是一種指令碼語言,可以用來建立動態更新的內容,控制多媒體,製作影象動畫,還有很多。

二.JavaScript基礎之語言規範

1.如何使用?

  • head內script標籤內編寫
  • head內script標籤src屬性引入外部js資源
  • body內最底部通過script標籤src屬性引入外部js資源(最常用)

2.註釋語法

// 單行註釋
/*多行註釋*/

3.結束符

JavaScript中的語句要以分號 ;為結束符

三.JavaScript基礎

JavaScript也是一門面向物件的程式語言,即一切皆物件!!!

name = 'jason'
name = 123
name = [1, 2, 3, 4]

name可以指向任意的資料型別
但是又一些語言中,變數名之間指向一種後續不能更改

1.變數與常量

1).變數宣告

在js中,首次定義一個變數名的時候需要用關鍵字宣告

1.關鍵字var
	var name = 'jason' // 全部都是全域性變數
    
2.關鍵字let
	let name = 'tony'  // 可以宣告區域性變數

他們倆的區別:
	var在for迴圈裡面定義也會影響到全域性
    let在區域性定義只會在區域性生效
    
"""
ps:let是ECMA6新語法,可以在全域性定義變數,不影響全域性
"""

2.常量

python中沒有真正意義上的常量,預設全大寫就是表示常量
js中有真正意義上的常量,需要使用關鍵字const宣告,這個常量不允許更改,一旦進行更改就會報錯

const pi = 3.14
pi = 3.44  // 報錯

2.變數的命名規範

變數名是區分大小寫的
JavaScript推薦使用駝峰式命名規範。

1.變數名命名規範(比python多一個&)
	數字、字母、下劃線、&
2.變數名命名規範(不遵循也可以)
	1.js中推薦使用駝峰式命名
    	userName
        dataOfDb
    2.python推薦使用下劃線的方式
    	user_name
        data_of_db
3.不能使用關鍵字作為變數名

3.支援編寫js程式碼的地方

1.可以單獨開設js檔案書寫
2.也可以直接在瀏覽器提供的console介面書寫
再用瀏覽器書寫js的時候,左上方的清空按鈕只是清空當前介面,程式碼其實還在,如果你想要重新來,重新整理或者重新開設一個頁面
	(在使用瀏覽器書寫你自己的js
	程式碼的時候推薦你在自己的html頁面開啟)

4.基本資料型別

如何檢視當前資料型別>>>:typeof 變數名;

js、python是一門動態型別,變數名繫結的資料值型別不固定

var name = 'jason'
name = 123
name = [11, 22, 33]

1).資料型別之數值型別(關鍵字number)

在js中不分整型、浮點型,統稱之為數值型別

var a = 11;
var b = 11.11;
typeof a;
typeof b;

'number'
整型、浮點型都是number型別

2).資料型別之型別轉換

parseInt()		轉換整型
perseFloat()	轉換浮點型

parseInt('123')
123
parseFloat('11.11')
11.11
parseInt('11.11')
11
parseInt('11adasdasdasd11')
11
parseInt('asddsad11')
NaN  // 屬於數值型別 表示的意思是 不是一個數字

為了與前端迎合,js做到了儘量避免報錯

3).資料型別之字元型別(string)

var a = "Hello";
var b = "world";
var c = a + b;
console.log(c);  // 得到Helloworld
var s = 'jason';
typeof s
'string'
var s1 = 'jason'
typeof s1;
'string'
var s2 = '''body'''
VM1243:1 Uncaught SyntaxError: Unexpected string  // 不支援三引號
1.模板字串

模板字串除了可以定義多行文字外還可以實現格式化字串操作

var s3 = `asadsadsad`  // 數字1左邊的那個符號`
undefined
typeof s3
'string'
模板字串替換
書寫${}會自動去前面找大括號裡面的變數名對應的值
如果沒有定義直接報錯
案例:
var name = 'jason'
var age = 18
var sss = `
my name is ${name} and my age is ${age}
`
sss
'my name is jason and my age is 18'
2.字串的拼接(內建方法)
在python中不推薦使用 + 做拼接,使用join
在JavaScript中推薦使用 + 做拼接,並且支援不同型別直接的拼接,它會自動儘自己最大的可能去進行型別轉換然後拼接
var name = jason
var age = 18
name + jason
jason18

4).js常見內建方法

方法 說明
.length 返回長度
.trim() 移除空白
.trimLeft() 移除左邊的空白
.trimRight() 移除右邊的空白
.charAt(n) 返回第n個字元
.concat(value, ...) 拼接
.indexOf(substring, start) 子序列位置
.substring(from, to) 根據索引獲取子序列
.slice(start, end) 切片
.toLowerCase() 小寫
.toUpperCase() 大寫
.split(delimiter, limit) 分割

5).布林型別(Boolean)

​ JS裡面的布林值與Python不同,JS是純小寫的(true,false),Python是首字母大寫(True,False)

6).null與undefined

​ null表示值為空(曾經擁有過),undefined表示沒有定義(從來沒有過)

7).物件(object)

物件之陣列(Array)>>>:類似於python中的列表
	let l1 = []
物件之自定義物件(object)>>>:類似於python的字典
	let d1 = {'name':'jason'}
    let d2 = new object()

5.運算子

1).算術運算子

+ - * / % ++(自增1) --(自減1)
var x=10;
var res1=x++;	加號在後面	先賦值後自增
var res2=++x;	加號在前面	先自增後賦值

2).比較運算子

!=(值不等 弱) ==(值相等 弱) ===(值相等 強) !==(值不等 強)

$\textcolor{red}{注意:}$

1 == “1”  // true  弱等於
1 === "1"  // false 強等於
//上面這張情況出現的原因在於JS是一門弱型別語言(會自動轉換資料型別),所以當你用兩個等號進行比較時,JS內部會自動先將
//數值型別的1轉換成字串型別的1再進行比較,所以我們以後寫JS涉及到比較時儘量用三等號來強制限制類型,防止斷錯誤

3).邏輯運算子

&&(與)	||(或)  !(非)

4).賦值運算子

= += -= *= /=

6.流程控制

  • 單if分支

    if (條件){
        條件成立執行的程式碼
    }
    
  • if-else分支

    if(條件){
        條件成立執行的程式碼
    }else{
        條件不成立執行的程式碼
    }
    
  • if-else if-else分支

    if(條件1){
        條件成立執行的程式碼
    }else if(條件2){
        條件1不成立條件2執行的程式碼
    }else{
        條件1和2都不成立執行的程式碼
    }
    
  • switch語法

    如果分支結構中else if很多可以考慮使用switch語法

    switch(條件){
        case 條件1:
            條件1成立執行的程式碼;
            break;	//如果沒有break會基於某個case一直執行下去
        case 條件2:
            條件2成立執行的程式碼;
            break;
        case 條件3:
            條件3成立執行的程式碼;
            break;
        case 條件4:
            條件4成立執行的程式碼;
            break;
        default:
      		條件都不滿足執行的程式碼
    }
    
  • for迴圈

    for(起始條件;迴圈條件;條件處理){
        迴圈體程式碼 
    }
    實操:
    for(let i=0;i<10;i++){
        console.log(i)
    }
    let dd = {'name':'jason','age':18}
    for(let k in dd){
        console.log(k)
    }
    
  • while迴圈

    while(迴圈條件){
        迴圈體程式碼
    }
    
  • 三元運算

    python:值1 if條件 else 值2
    JS中:條件?值1:值2
    

7.函式

function 函式名(形參){
    // 函式註釋
    函式體程式碼
    return 返回值
}
// 匿名函式
var s1 = function(a, b){
    return a + b;
}

//箭頭函式
var f = v => v;
var f = function(v){
    return v;
}

var f = () => 5;
var f = function(){return 5};

var sum = (num1, num2) => num1 + num2;
var sum = function(num1, num2){
    return num1 + num2;
}

$\textcolor{red}{注意:}$

1.JS中函式的形參與實參個數可以不對應
	傳少了就是undefined,傳多了不要
2.函式體程式碼中有一個關鍵字arguments用來接收所有的實參
3.函式的返回值如果有多個需要自己處理成一個整體

8.內建物件

  • Date物件

    建立Date物件

    //方法1:不指定引數
    var d1 = new Date();
    console.log(d1.toLocaleString());
    
    //方法2:引數為日期字串
    var d2 = new Date("2004/3/20 11:12");
    console.log(d2.toLocaleString());
    var d3 = new Date("04/03/20 11:12");
    console.log(d3.toLocaleString());
    
    //方法3:引數為毫秒數
    var d3 = new Date(5000);
    console.log(d3.toLocaleString());
    console.log(d3.toUTCString());
    
    //方法4:引數為年月日小時分鐘秒毫秒
    var d4 = new Date(2004,2,20,11,12,0,300);
    console.log(d4.toLocaleString());  //毫秒並不直接顯示
    

    Data物件的方法

    var d = new Date(); 
    //getDate()                 獲取日
    //getDay ()                 獲取星期
    //getMonth ()               獲取月(0-11)
    //getFullYear ()            獲取完整年份
    //getYear ()                獲取年
    //getHours ()               獲取小時
    //getMinutes ()             獲取分鐘
    //getSeconds ()             獲取秒
    //getMilliseconds ()        獲取毫秒
    //getTime ()                返回累計毫秒數(從1970/1/1午夜)
    
  • JSON物件

    var str1 = '{"name": "Alex", "age": 18}';
    var obj1 = {"name": "Alex", "age": 18};
    // JSON字串轉換成物件(反序列化)
    var obj = JSON.parse(str1); 
    // 物件轉換成JSON字串(序列化)
    var str = JSON.stringify(obj1);
    
  • RegExp物件

    應用正則表示式的物件

    定義正則表示式的兩種方式

    var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}");
    var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/;
    
    // 正則校驗資料
    reg1.test('jason666')
    reg2.test('jason666')
    

    $\textcolor{red}{注意事項:}$

    ​ 1.正則表示式中不能有空格

    ​ 2.全域性匹配時有一個lastIndex屬性

    // 全域性匹配
    var s1 = 'egondsb dsb dsb';
    s1.match(/s/)
    s1.match(/s/g)
    //使用match進行匹配的時候,返回的是一個物件,如果有值就會在前面顯示出來
    
    var s1 = 'asfdasddfasf aqgwefqwef asdfae'
    
    s1.match(/s/)
    結果:['s', index: 1, input: 'asfdasddfasf aqgwefqwef asdfae', groups: undefined]
    s1.match(/s/g)
    結果:(4) ['s', 's', 's', 's']
    
    var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/g
    reg2.test('egondsb');
    reg2.test('egondsb');
    reg2.lastIndex;
    

    當我們在正則表示式的後面寫上一個g的時候表示全域性匹配,這時候游標的移動跟檔案的讀取相似,當讀取到末尾的時候會出現沒有資料可讀的情況,這時候就會返回false,並且重置游標到開頭,我們可以使用lastIndex方法來檢視游標目前所在的位置。

    注意事項三:test匹配資料不傳預設傳undefined

    // 校驗時不傳引數
    var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/
    reg2.test();
    reg2.test(undefined);
    
    var reg3 = /undefined/;
    reg3.test();