关键词

JavaScript高级程序设计 读书笔记之十一 内置对象Global

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代码,然后执行这段代码,最终得到了计算结果。

本文链接:http://task.lmcjl.com/news/10275.html

展开阅读全文