JavaScript高级程序设计 读书笔记之十一 内置对象Global
什么是全局作用域
在JavaScript中,全局作用域是整个程序的最高层次。全局变量会成为全局作用域的属性,全局函数会成为全局作用域的方法。在全局作用域中定义的变量和函数,在整个程序范围内都是可用的。
Global对象简介
Global是JavaScript中的一个全局对象,它不是构造函数,因此无法实例化。在浏览器端,Global对象的定义可以更进一步,它不仅是Window对象的一个属性,还是当前页面的全局作用域。Global对象拥有一些方法和属性,它们可以在任意作用域下直接访问。
全局函数
以下是一些常用的全局函数:
Escape和Unescape
Escape和Unescape函数分别用于将字符串转义成可以传输的ASCII码和将转义后的字符串还原成字符。例如:
let str = 'Hello, world!';
let encodedStr = escape(str);
console.log(encodedStr); // 输出: Hello%2C%20world%21
let decodedStr = unescape(encodedStr);
console.log(decodedStr); // 输出: Hello, world!
Eval
Eval函数用来执行一段字符串代码,将字符串解析为JavaScript代码并执行。但是由于Eval的执行会受到外部输入的影响,因此它可能会让代码变得不安全,因此在一般情况下,不建议使用Eval。
let str = 'console.log("Hello, world!")';
eval(str); // 输出: Hello, world!
ParseInt
ParseInt用于将字符串转换为整数,可以传入第二个参数来设置进制。
let num = parseInt('123');
console.log(num); // 输出: 123
ParseFloat
ParseFloat用于将字符串转换为小数。
let num = parseFloat('3.14');
console.log(num); // 输出: 3.14
全局属性
以下是一些常用的全局属性:
NaN
NaN表示非数字,直接进行数字运算时有可能得到NaN。
let result = 1 / 'hello';
console.log(result); // 输出: NaN
Infinity和-Infinity
Infinity和-Infinity分别表示无穷大和负无穷大。
console.log(1 / 0); // 输出: Infinity
console.log(-1 / 0); // 输出: -Infinity
undefined
undefined表示未定义,通常用于判断变量是否被定义。
let a;
if (a === undefined) {
console.log('a is undefined');
}
代码示例
以下是一个计算斐波那契数列的函数,并使用全局作用域中的变量保存计算结果:
let memo = [0, 1];
function fibonacci(n) {
if (memo[n] != null) {
return memo[n];
}
return memo[n] = fibonacci(n - 1) + fibonacci(n - 2);
}
console.log(fibonacci(10)); // 输出: 55
console.log(fibonacci(20)); // 输出: 6765
在这个例子中,memo变量是在全局作用域中定义的。它用于保存计算结果,这样可以避免重复计算。
下面是一个使用Eval函数的例子:
let str = '1 + 2 + 3';
let result = eval(str);
console.log(result); // 输出: 6
在这个例子中,Eval函数将字符串解析成为JavaScript代码,然后执行这段代码,最终得到了计算结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript高级程序设计 读书笔记之十一 内置对象Global - Python技术站