# Javascript basic

## Javascript basic

## **如何使用**

1.直接在HTML內加入

`<script> </script>`

2.外部檔案

`<script src=""> </script>`

## **選取**

1.選取id

```
document.getElementById("")
```

2.選取tag

```
document.getElementsByTagName("")
```

3.選取class

```
document.getElementsByClassName("")
```

## **型別**

```
var length = 16;                               // Number
var lastName = "Johnson";                      // String
var cars = ["Saab", "Volvo", "BMW"];           // Array
var x = {firstName:"John", lastName:"Doe"};    // Object
```

查詢型別

```
typeof "john"
```

<http://www.w3schools.com/js/tryit.asp?filename=tryjs_datatypes_typeof>

## 定義物件後可以使用陣列方式存取

<http://www.w3schools.com/js/tryit.asp?filename=tryjs_objects_properties_2>

## Scope

1.Local

區域變數只存在function內(以var 開頭)

2.Global

在function外宣告均為全域變數，在function內不以var 宣告亦為global

## Array

1.宣告

```
var as=[];

//or

as = new Array()
```

但以下這兩個為不同的意思

```
    e = [3]             // e.length == 1, e[0] == 3
    f = new Array(3),   // f.length == 3, f[0] == undefined
```

2.操作array <http://www.w3schools.com/js/js_array_methods.asp>

## 比較與表達

1.比較 <http://www.w3schools.com/js/js_comparisons.asp>

2.表達

1

```
if () {

}
```

2

```
if(){

}else{

}
```

3

```
if (time < 10) {
    greeting = "Good morning";
} else if (time < 20) {
    greeting = "Good day";
} else {
    greeting = "Good evening";
}
```

4

為什麼不放三個if就好?

```
//因為第一個if跑完他不會停，而會繼續往下跑其他if找是否有其他符合

ex:上例的time等於5
```

5\.

```
switch(expression) {
    case n:
        code block
        break;
    case n:
        code block
        break;
    default: //there is no case match
        default code block
}
```

6\.

```
for (i = 0; i < 5; i++) {
    text += "The number is " + i + "<br>";
}
```

7\.

```
var person = {fname:"John", lname:"Doe", age:25}; 

var text = "";
var x;
for (x in person) {
    text += person[x];
}
```

8\.

```
while (i < 10) {
    text += "The number is " + i;
    i++;
}
```

9\.

```
do {
    code block to be executed
}
while (condition);
```

加上do的差別在於他會先執行一次，再檢查

## Regular Expression

1.用途

When you search for data in a text, you can use this search pattern to describe what you are searching for.

簡言之:搜尋要找的字 RegExp

格式: / /

查找範圍: / /後可加g 或i或m 如/ /g / /gi g為找到一次後會繼續往後找，i為不分大小寫,m為找多行

查找字串 /as/g 每找到as就會印出as

查找字元 /\[as]/g 找到a或s會印出，一次只找一個字，//g 代表查找所有不是a\~z的字

查找特殊的字 /\b/g 查找所有數字，也是以單個字來查找

查找的附帶條件

* * ? 等等，記得是要放在方括號外面，如果有多個附帶條件可用括號刮起來

    ex:/<%(+)?%>/g

RegExp為一個object 其擁有的屬性如下

global RegExp 对象是否具有标志 g。 ignoreCase RegExp 对象是否具有标志 i。\
lastIndex 一个整数，标示开始下一次匹配的字符位置。 multiline RegExp 对象是否具有标志 m。\
source 正则表达式的源文本。

RegExp的 方法

compile 编译正则表达式。\
exec 检索字符串中指定的值。返回找到的值，并确定其位置。 test 检索字符串中指定的值。返回 true 或 false。

較常用的為exec，可用console出其反為物件(在chrome顯示為陣列，但其要使用物件存取)

ex:

```
var tpl = '<p>Hello, my name is <%name%>. I\'m <%age%> years old.</p>'

var re = /<%([^%>]+)?%>/g,

match;

var match = re.exec(tpl);

console.log(match);
結果:
["<%name%>", "name", index: 21, input: "<p>Hello, my name is <%name%>. I'm <%age%> years old.</p>"]
```

<http://www.w3schools.com/js/js_regexp.asp>

## JSON

<http://www.w3schools.com/js/js_json.asp>
