-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
97 lines (95 loc) · 26.7 KB
/
index.html
File metadata and controls
97 lines (95 loc) · 26.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<link rel="stylesheet" href="/umi.eb884056.css" />
<script>
window.routerBase = "/";
</script>
<script>
//! umi version: 3.3.1
</script>
<script
src="https://www.googletagmanager.com/gtag/js?id=UA-89371431-6"
async="true"
></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag("js", new Date());
gtag("config", "UA-89371431-6");
</script>
<title>变量与常量</title>
</head>
<body>
<div id="root"><div class="__dumi-default-layout" data-show-sidemenu="true" data-show-slugs="true" data-site-mode="true" data-gapless="false"><div class="__dumi-default-navbar" data-mode="site"><button class="__dumi-default-navbar-toggle"></button><a class="__dumi-default-navbar-logo" href="/">StaticScript</a><nav><div class="__dumi-default-search"><input type="search" class="__dumi-default-search-input" value=""/><ul></ul></div><a aria-current="page" class="active" href="/guide">指南</a><a target="_blank" rel="noopener noreferrer" href="https://github.com/StaticScript/StaticScript">GitHub<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="__dumi-default-external-link-icon"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a><div class="__dumi-default-locale-select" data-locale-count="2"><span>English</span></div></nav></div><div class="__dumi-default-menu" data-mode="site"><div class="__dumi-default-menu-inner"><div class="__dumi-default-menu-header"><a class="__dumi-default-menu-logo" href="/"></a><h1>StaticScript</h1><p></p></div><div class="__dumi-default-menu-mobile-area"><ul class="__dumi-default-menu-nav-list"><li><a aria-current="page" class="active" href="/guide">指南</a></li><li><a target="_blank" rel="noopener noreferrer" href="https://github.com/StaticScript/StaticScript">GitHub<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="__dumi-default-external-link-icon"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul><div class="__dumi-default-locale-select" data-locale-count="2"><span>English</span></div></div><ul class="__dumi-default-menu-list"><li><a href="/guide">介绍</a></li><li><a href="/guide/install">安装</a></li><li><a href="/guide/getting-started">快速上手</a></li><li><a href="/guide/type">类型</a></li><li><a aria-current="page" class="active" href="/guide/variable&constant">变量与常量</a></li><li><a href="/guide/literal">字面量</a></li><li><a href="/guide/operators">运算符</a></li><li><a href="/guide/integer&float">整数与浮点数</a></li></ul></div></div><ul class="__dumi-default-layout-toc" role="slug-list"><li title="概述" data-depth="2" class=""><a href="/guide/variable&constant#概述"><span>概述</span></a></li><li title="变量" data-depth="2" class=""><a href="/guide/variable&constant#变量"><span>变量</span></a></li><li title="常量" data-depth="2" class=""><a href="/guide/variable&constant#常量"><span>常量</span></a></li><li title="常量与变量的区别" data-depth="2" class=""><a href="/guide/variable&constant#常量与变量的区别"><span>常量与变量的区别</span></a></li><li title="变量声明示例" data-depth="2" class=""><a href="/guide/variable&constant#变量声明示例"><span>变量声明示例</span></a></li><li title="常量声明示例" data-depth="2" class=""><a href="/guide/variable&constant#常量声明示例"><span>常量声明示例</span></a></li><li title="可能的语义报错" data-depth="2" class=""><a href="/guide/variable&constant#可能的语义报错"><span>可能的语义报错</span></a></li></ul><div class="__dumi-default-layout-content"><div class="markdown"><h2 id="概述"><a aria-hidden="true" href="#概述"><span class="icon icon-link"></span></a>概述</h2><p>StaticScript 的变量和常量均需要先声明后使用</p><h2 id="变量"><a aria-hidden="true" href="#变量"><span class="icon icon-link"></span></a>变量</h2><p>在声明时, 变量必须显式地标注类型或者赋初值(用于类型推导)</p><h2 id="常量"><a aria-hidden="true" href="#常量"><span class="icon icon-link"></span></a>常量</h2><p>在声明时, 常量必须赋初值, 而显式的类型标注则是可选的</p><h2 id="常量与变量的区别"><a aria-hidden="true" href="#常量与变量的区别"><span class="icon icon-link"></span></a>常量与变量的区别</h2><ul><li>变量的声明修饰符是<code>let</code>, 而常量的声明修饰符是<code>const</code></li><li>常量只能在声明时赋值, 不允许二次赋值</li></ul><h2 id="变量声明示例"><a aria-hidden="true" href="#变量声明示例"><span class="icon icon-link"></span></a>变量声明示例</h2><p>声明布尔变量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
let a: boolean;
// 类型推导
let b = true;
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> a</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> b </span><span class="token operator">=</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明整数变量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
let c: int;
// 类型推导
let d = 1;
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> c</span><span class="token punctuation">:</span><span class="token plain"> int</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> d </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明浮点数变量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
let e: number;
// 类型推导
let f = 1.2;
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> e</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> f </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">1.2</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明字符串变量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
let g: string;
// 类型推导
let h = "content";
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> g</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> h </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string">"content"</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明数组</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
let i: number[] = [];
// 类型推导
let j = [1, 2];
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> i</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> j </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token plain"> </span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><h2 id="常量声明示例"><a aria-hidden="true" href="#常量声明示例"><span class="icon icon-link"></span></a>常量声明示例</h2><p>声明布尔常量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
const a: boolean = true;
// 类型推导
const b = true;
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> a</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">boolean</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> b </span><span class="token operator">=</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明整数常量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
const c: int = 1;
// 类型推导
const d = 1;
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> c</span><span class="token punctuation">:</span><span class="token plain"> int </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> d </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">1</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明浮点数常量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
const e: number = 1.1;
// 类型推导
const f = 1.2;
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> e</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">1.1</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> f </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">1.2</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明字符串常量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
const g: string = "hi";
// 类型推导
const h = "content";
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> g</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string">"hi"</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> h </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string">"content"</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>声明数组常量</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// 显式类型
const i: number[] = [1.1, 2.2];
// 类型推导
const j = [1, 2];
" data-status="copy"></button><div class="token-line"><span class="token comment">// 显式类型</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> i</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation">[</span><span class="token number">1.1</span><span class="token punctuation">,</span><span class="token plain"> </span><span class="token number">2.2</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// 类型推导</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> j </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token plain"> </span><span class="token number">2</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><h2 id="可能的语义报错"><a aria-hidden="true" href="#可能的语义报错"><span class="icon icon-link"></span></a>可能的语义报错</h2><p>变量在声明时既没有显式类型, 也没有初值</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// error
let a;
" data-status="copy"></button><div class="token-line"><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> a</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>变量或者常量在声明时, 显式类型和自动推导出来的类型冲突</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// error
let a: number = true;
// error
const a: string = 20;
" data-status="copy"></button><div class="token-line"><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> a</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token boolean">true</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> a</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">20</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>常量在声明的时候没有赋初值</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// error
const A;
// error
const B: number;
" data-status="copy"></button><div class="token-line"><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> </span><span class="token constant">A</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> </span><span class="token constant">B</span><span class="token punctuation">:</span><span class="token plain"> </span><span class="token builtin">number</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>常量在声明后被二次赋值</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// error
const A = 10;
A = 20;
" data-status="copy"></button><div class="token-line"><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> </span><span class="token constant">A</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">10</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token constant">A</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token number">20</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><p>没有显式声明类型的空数组</p><div class="__dumi-default-code-block"><pre class="prism-code language-ts"><button title="" type="button" class="__dumi-default-icon __dumi-default-btn-copy __dumi-default-code-block-copy-btn" data-clipboard-text="// error
let arr1 = [];
// error
const arr2 = [];
" data-status="copy"></button><div class="token-line"><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">let</span><span class="token plain"> arr1 </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token comment">// error</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span><span class="token keyword">const</span><span class="token plain"> arr2 </span><span class="token operator">=</span><span class="token plain"> </span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span><span class="token plain"></span></div><div class="token-line"><span class="token plain"></span></div></pre></div><blockquote><p>之所以报错是因为 StaticScript 无法从空数组推导出类型</p></blockquote></div><div class="__dumi-default-layout-footer-meta"><span data-updated-text="最后更新时间:">2020/12/19 下午2:19:33</span></div></div></div></div>
<script>
window.g_useSSR = true;
window.g_initialProps = {};
</script>
<script src="/umi.63dc6bce.js"></script>
</body>
</html>