Skip to content

Commit 3b4cd59

Browse files
committed
docs: add contents
1 parent 4c85912 commit 3b4cd59

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# 環境
2+
3+
::: tip 🎯 このページのゴール
4+
5+
- TBD
6+
:::
7+
8+
Viteには環境の概念があります。ここでいう環境とは、コードの実行環境のことです。
9+
10+
## 関数のふるまい
11+
12+
関数は、引数で変える。
13+
14+
```ts
15+
function getMessageTo(name) {
16+
return `Hello, ${name}!`
17+
}
18+
19+
console.log(getMessageTo('Alice')) // Hello, Alice!
20+
console.log(getMessageTo('Bob')) // Hello, Bob!
21+
```
22+
23+
## 関数のカーリー化
24+
25+
関数を返す。
26+
27+
```ts
28+
const createGetMessageTo = function (name) {
29+
return function () {
30+
console.log(`Hello, ${name}!`)
31+
}
32+
}
33+
34+
const getMessageToAlice = createGetMessageTo('Alice')
35+
const getMessageToBob = createGetMessageTo('Bob')
36+
37+
console.log(getMessageToAlice()) // Hello, Alice!
38+
console.log(getMessageToBob()) // Hello, Bob!
39+
```
40+
41+
## 関数のメタプログラミング
42+
43+
関数のカーリー化では、関数のふるまいの一部を変更することができました。
44+
Functionコンストラクターを使用して、任意のコードを実行できます。
45+
46+
```ts
47+
const codeOfSayHelloToAlice = `console.log('Hello, Alice!')`
48+
const codeOfSayHelloToBob = `console.log('Hello, Bob!')`
49+
50+
const sayHelloToAlice = new Function(codeOfSayHelloToAlice)
51+
const sayHelloToBob = new Function(codeOfSayHelloToBob)
52+
53+
sayHelloToAlice() // Hello, Alice!
54+
sayHelloToBob() // Hello, Bob!
55+
```
56+
57+
Functionコンストラクターに渡す文字列がどのように定義されているかに制限はないため、任意のJavaScriptファイルを読みこんで、その内容を実行することができます。
58+
59+
```ts
60+
// mycode.mjs
61+
return `Hello, Alice!`
62+
```
63+
64+
```ts
65+
// runner.mjs
66+
import fsPromises from 'fs/promises'
67+
68+
async function runCode() {
69+
const code = await fsPromises.readFile('./mycode.mjs', 'utf-8')
70+
71+
return new Function(code)
72+
}
73+
74+
console.log(await runCode()) // Hello, Alice!
75+
```
76+
77+
---
78+
79+
::: info ✨ まとめ
80+
81+
- TBD
82+
:::

0 commit comments

Comments
 (0)