SP.ScriptHelpers に isNullOrEmptyString があった件

[ブログからの転載](http://1bed.allright.life/?p=2541)

約 3 ヶ月開発してて気がついたんだけど、SP.ScriptHelpers に Null や Undfined、Empty を判定するメソッドが生えていた。

* SP.ScriptHelpers.isNullOrEmptyString();
* SP.ScriptHelpers.isNullOrUndefined();
* SP.ScriptHelpers.isNullOrUndefinedOrEmpty();
* SP.ScriptHelpers.isUndefined();

マジかー 今まで自作の関数読んでたよ... 
人はこうやって大人になっていくんだね(白目

コード読んだから何やってるか判るけど、とりあえず動作確認表を作ってみた。  
ついでに JavaScript での判定も表にした。

## 検証環境

* SharePoint Online (2017/06/27 実施)
* Windows 10 Pro 64bit
* IE11, FF, Chrome

## SP.ScriptHelpres での判定について

検証コードは雑に書くとこんな感じ。
 
```js
var values = [null, 'null', undefined, 'undefined', false, 'false', '', 0, '0'];
for (var i in values){
    v = values[i];
    console.log(SP.ScriptHelpers.isNullOrUndefinedOrEmpty(v));
}
```

| No. | conditions | null | 'null' | undefined | 'undefined' | false | 'false' | '' | 0 | '0' |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | isNullOrEmptyString(v) | **true** | false | **true** | false | false | false | **true** | false | false |
| 2 | isNullOrUndefined(v) | **true** | false | **true** | false | false | false | false | false | false |
| 3 | isNullOrUndefinedOrEmpty(v) | **true** | false | **true** | false | false | false | **true** | false | false |
| 4 | isUndefined(v) | false | false | **true** | false | false | false | false | false | false |


ちゃんと予定通りの動きをしてくれている(まぁコード見れば当たり前ですが)。


## JavaScript での判定について

ついでに JavaScript での判定も表にした。

| No. | conditions | null | 'null' | undefined | 'undefined' | false | 'false' | '' | 0 | '0' |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | v == null | **true** | false | **true** | false | false | false | false | false | false |
| 2 | v === null | **true** | false | false | false | false | false | false | false | false |
| 3 | v == "null" | false | **true** | false | false | false | false | false | false | false |
| 4 | v === "null" | false | **true** | false | false | false | false | false | false | false |
| 5 | v == undefined | **true** | false | **true** | false | false | false | false | false | false |
| 6 | v === undefined | false | false | **true** | false | false | false | false | false | false |
| 7 | v == "undefined" | false | false | false | **true** | false | false | false | false | false |
| 8 | v === "undefined" | false | false | false | **true** | false | false | false | false | false |
| 9 | typeof v == undefined | false | false | false | false | false | false | false | false | false |
| 10 | typeof v === undefined | false | false | false | false | false | false | false | false | false |
| 11 | typeof v == "undefined" | false | false | **true** | false | false | false | false | false | false |
| 12 | typeof v === "undefined" | false | false | **true** | false | false | false | false | false | false |
| 13 | v == false | false | false | false | false | **true** | false | **true** | **true** | **true** |
| 14 | v === false | false | false | false | false | **true** | false | false | false | false |
| 15 | v == "false" | false | false | false | false | false | **true** | false | false | false |
| 16 | v === "false" | false | false | false | false | false | **true** | false | false | false |
| 17 | v == "" | false | false | false | false | **true** | false | **true** | **true** | false |
| 18 | v === "" | false | false | false | false | false | false | **true** | false | false |
| 19 | v == 0 | false | false | false | false | **true** | false | **true** | **true** | **true** |
| 20 | v === 0 | false | false | false | false | false | false | false | **true** | false |
| 21 | v == "0" | false | false | false | false | **true** | false | false | **true** | **true** |
| 22 | v === "0" | false | false | false | false | false | false | false | false | **true** |


やはり、型までチェックしないと危ないことが判ります。