---
# System prepended metadata

title: PHP 與 JavaScript 的異同
tags: [Dahis, PHP]

---

# PHP 與 JavaScript 的異同

## 相同

> 相同指的是在寫法上僅僅只是改變符號，而底層觀念相同的部分

### 宣告變數
```javascript=
var a = 1;
```

```php=
<?php
    $a = 1; // php
?>
```

### 字串串接
#### 皆為字串
```javascript=
'This is ' + 'an apple.';
```
```php=
<?php
    'This is ' . 'an apple.';
?>
```
#### 字串與變數
```javascript=
var item = 'an apple';
'This is ' + item; // 加號運算子
`This is ${item}` // ES6 樣板字串
```
```php=
<?php
    $item = 'an apple';
    "This is " . $item; // 與加號運算子相同
    "This is $item"; // 與 ES6 樣板字串相同
    'THis is $item'; // 此處的 $item 會被當成字串而非變數輸出
?>
```

## 相異

> 相異指的是觀念上的根本不同，如果用 JavaScript 的觀念理解可能會造成混淆的部分

### 變數範疇

```javascript=
// JS 中的函式如果無法在區塊中取得變數，會試圖往全域尋找同名變數
var a = 'Hello';
function test() {
    return a; // a = 'Hello'
}
```
```php=
<?php
    // php 預設的變數範疇為函式，且不會主動往全域尋找同名變數
    $a = 'Hello';
    function test() {
        return $a; // Notice: Undefined variable: a
    }
?>
```
###### tags: `PHP` `Dahis`