-
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
4c85912
commit 3b4cd59
Showing
1 changed file
with
82 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# 環境 | ||
|
||
::: tip 🎯 このページのゴール | ||
|
||
- TBD | ||
::: | ||
|
||
Viteには環境の概念があります。ここでいう環境とは、コードの実行環境のことです。 | ||
|
||
## 関数のふるまい | ||
|
||
関数は、引数で変える。 | ||
|
||
```ts | ||
function getMessageTo(name) { | ||
return `Hello, ${name}!` | ||
} | ||
|
||
console.log(getMessageTo('Alice')) // Hello, Alice! | ||
console.log(getMessageTo('Bob')) // Hello, Bob! | ||
``` | ||
|
||
## 関数のカーリー化 | ||
|
||
関数を返す。 | ||
|
||
```ts | ||
const createGetMessageTo = function (name) { | ||
return function () { | ||
console.log(`Hello, ${name}!`) | ||
} | ||
} | ||
|
||
const getMessageToAlice = createGetMessageTo('Alice') | ||
const getMessageToBob = createGetMessageTo('Bob') | ||
|
||
console.log(getMessageToAlice()) // Hello, Alice! | ||
console.log(getMessageToBob()) // Hello, Bob! | ||
``` | ||
|
||
## 関数のメタプログラミング | ||
|
||
関数のカーリー化では、関数のふるまいの一部を変更することができました。 | ||
Functionコンストラクターを使用して、任意のコードを実行できます。 | ||
|
||
```ts | ||
const codeOfSayHelloToAlice = `console.log('Hello, Alice!')` | ||
const codeOfSayHelloToBob = `console.log('Hello, Bob!')` | ||
|
||
const sayHelloToAlice = new Function(codeOfSayHelloToAlice) | ||
const sayHelloToBob = new Function(codeOfSayHelloToBob) | ||
|
||
sayHelloToAlice() // Hello, Alice! | ||
sayHelloToBob() // Hello, Bob! | ||
``` | ||
|
||
Functionコンストラクターに渡す文字列がどのように定義されているかに制限はないため、任意のJavaScriptファイルを読みこんで、その内容を実行することができます。 | ||
|
||
```ts | ||
// mycode.mjs | ||
return `Hello, Alice!` | ||
``` | ||
|
||
```ts | ||
// runner.mjs | ||
import fsPromises from 'fs/promises' | ||
|
||
async function runCode() { | ||
const code = await fsPromises.readFile('./mycode.mjs', 'utf-8') | ||
|
||
return new Function(code) | ||
} | ||
|
||
console.log(await runCode()) // Hello, Alice! | ||
``` | ||
|
||
--- | ||
|
||
::: info ✨ まとめ | ||
|
||
- TBD | ||
::: |