奇怪的事情,姐妹们疑似也有超能力。
方函式:表面上虽然看起来就是所谓的姐妹、工具人关系,但事实上背後,我们还有一套专属的识别方式。
JavaScript内的程序码,都是由Unicode字元集(character set) 来撰写,除此之外,让我们来更近一步探索还有哪些规则。
作为一个名称,被用来为变数、特性、函式与类别命名。
命名规则:
x
_
$
以下分别来测试:
//一个字母
let x = 2;
//一个钱币符号
const $ = 3;
//一个底线符号
let _ = 5;
//中文
let 铁人 = "Andy";
//形意符号 Ideographs
let ? = "竟然也能";
//数学符号 π
let π = "数学符号"
//上面都是所谓的识别字。
console.log(x,$,_,铁人,?,π)
看吧,没有一个有报出错误。
不建议的识别字:
在上面部分识别字有标示不建议,是基於:
基於上述理由,一般识别字命名建议还是以ASII字母与数字为主。
这些字被JavaScript预留,不能被作为识别字的名称,唯有在特定情形下可以破例,但背後原理复杂,有机会再讲。
不相信的话,我们挑出预留字new
来作为识别字试试看:
let new = 2;
嗯,报错了。
不知道你会不会跟我之前一样(其实是现在),常看到宣告的好处不外乎就是:避免污染全域
我们可以把这句话拆为两个部分来理解:
所谓全域,全名为全域物件(global object) 是一个物件,当JS直译器启动时(或是重整页面时),它就会内建一些初始的特性:
undefined
,NaN
等isNaN()
,eval()
等等Date()
,String()
但这些内容不是保留字。
所以它们的值会被修改吗? 来试试看
window.undefined //undefined
undefined = 5;
window.undefined // undefined
就算识别字名称取名与它们相同,它们不会被修改。
现在我们知道什麽是全域了,那污染指的是?
//最初staff变数作为
staff = 15;
function calculateNumbers(i){
return staff + i;
}
calculateNumbers(1);
console.log(staff);//16?
function calculateNumbers(i){
staff = [];
staff.push(i);
return i
}
console.log(staff);
这是因为当你的识别字,没有进行宣告时
识别字x1
的值会变成属性,被存入global object
内。
x1 = 2;
//window查找是否有这个属性
window.x1
所以,不论你是在哪都能取到x1
的值,且会互相影响。
-- to be continued --
那今天就到这边搂!
每天的休息,是为了後面的追求,明天见。
犀牛大全
JavaScript Reserved Words
初学者跪着学JavaScript Day3:变数Variable、宣吿var
<<: 不只懂 Vue 语法:试说明有哪些方式可以全域注册方法?
>>: 【Day 22】Google Apps Script - API Blueprint 篇 - API Blueprint 格式范例
上午: Python机器学习套件与资料分析 挑几个不错的片段分享 # 储存每个epoch的weigh...
前言 「指月录」卷二十八有道: 「见山是山,见水是水;见山不是山,见水不是水;见山仍是山,见水仍是水...
今天要继续讲转职工作使用到的工具以及遇到的一些问题及处理方式。 公司的专案在制作图表有使用到Cube...
今天继续说到阵列,来做几个范例 程序码如下: import java.util.*; import ...
Set Associative Cache tags: IT铁人 Direct Mapped缺点 上...