首页 > 其他分享 >js查缺补漏——闭包和单体内置对象Global、Math

js查缺补漏——闭包和单体内置对象Global、Math

时间:2024-10-23 21:48:23浏览次数:3  
标签:闭包 补漏 函数 对象 Global eval 执行 Math

单体内置对象

内置对象的概念:不依赖于宿主环境的对象,这些对象在程序之前前就已经存在,不需要再去实例化了。比如Object、Array、String。

所以了解一下常用的这两个,Global和Math对象。

一、Global对象

方法:isNaN(), isFinite(), parseInt(), parseFloat()这些都是Global对象的方法。
此外,还有URL编码方法,encodeURI(), encodeURIComponent()可以对通用资源标识符URI进行编码,以便发送给浏览器。前者用于整个URI,后者是对URI中的某一断进行编码。而且前者不会对本身属于URI的特殊字符进行编码,只对空格编码,而后者是会对它发现的任何非标准字符进行编码,常常用来处理查询参数。

与此对应解码的方法:decodeURI() ,和decodeURIComponent().同样的前者也是只能解析%20对应的空格,其他的无法解码,后者可以进行任意的解析。

eval(): 是一个完整的ECMAScript解析器,只接收一个参数,即要执行的ECMAScript/JavaScript字符串。不会进行变量或者函数的提升,它们是被包含在一个字符串里,只在eval()执行的时候创建。相当于解释执行,同时还能创建变量或函数。

ps:注意在严格模式下在外部访问不到eval函数中创建的任何变量或函数,所以调用会报错,包括使用eval进行赋值也是会报错。

var msg = "hello world"
eval(alert(msg))

eval函数会把alert(msg)作为语句解析,同时会执行这个语句,把最终执行的结果插入到原位置。

执行过程:当解析器发现代码调用eval函数的时候,会把传入的参数当做实际的ECMAScript语句来解析,并把执行结果插入到原位置。通过eval()执行的代码是包含该次调用的执行环境中的一部分,所以被执行的代码与该执行环境具有相同的作用域链,意味着通过eval()执行的代码可以引用在包含环境中定义的变量。

优缺点:解释代码字符串的能力强大。但也有隐患,容易造成代码注入,当在使用它执行用户输入数据的时候,会导致会有恶意用户输入威胁你的站点或应用程序安全的代码。

Global对象的属性:
NaN,undefined,infinity, Boolean,Number,Function,Object,Array,String,RegExp,Date,Error,EvalError,ReferenceError,RangeError,SyntaxError,TypeError,URIError.

访问Global对象的方法:

  • 作为window对象的一部分,通过访问window对象的方法调用
  • 通过立即调用的函数表达式的形式,返回this。
var global = function() {
   return this;
}()

顺便介绍一下立即执行函数的相关知识:
立即执行函数(Immediately Invoked Function Expression,IIFE)‌是一种在定义后立即执行的函数。其基本语法形式为:

第一种写法
(function() {
    // 函数体
})();

第二种写法
function() {
  //
}()

立即执行函数的主要用途包括:

  • 创建独立作用域‌:例如,在处理DOM元素时,使用立即执行函数可以为每个元素创建一个独立的作用域,避免全局变量的冲突。

  • 初始化模块‌:在模块化开发中,立即执行函数可以用来初始化模块,确保模块的变量和函数不会污染全局作用域。例如时间处理、创建对象等。

  • 避免全局变量污染‌:通过创建一个独立的作用域,避免外部访问到函数内部的变量,从而防止变量污染‌。避免重复执行‌。

  • 返回值或者函数。

二、Math对象

Math对象的属性:
Math.E: 自然对数的底数,即e。
Math.PI:π的值。
Math.LN10: 10的自然对数。
Math.LN2: 2的自然对数。
Math.LOG2E: 以2为底e的对数。
Math.LOG10E: 以10为底e的对数。
Math.SORT2: 2的平方根
Math.SORT1_2: 2的平方根的倒数。

Math对象的方法:

1.求最大最小值
Math.min()
Math.max()

ps:求一组数的最大值
var values = [1,34,56,77]
var max = Math.max.apply(Math, values)
好处:避免了多余的循环和在if语句通过判断去求最大最小值。

2.舍入方法
Math.ceil() 向上舍入
Math.floor() 向下舍入
Math.round() 四舍五入

3.随机数的方法
Math.random() 返回大于零小于一的一个随机数,常用于随机显示一些名人名言和新闻事件。
从某个整数范围内随机选择一个值
值 = Math.floor(Math.Random() * 可能值的总数 + 第一个可能的值)
例子:var num = Math.floor(Math.random()*10 +1)

此外常用的方法如下:
1.Math.abs(num) 返回绝对值
2.Math.sqrt(num) 返回平方根```

标签:闭包,补漏,函数,对象,Global,eval,执行,Math
From: https://blog.csdn.net/weixin_45404779/article/details/143188749

相关文章

  • Webpack5-合并脚本(webpack-merge-and-include-globally)
    安装插件:yarnaddwebpack-merge-and-include-globally-Dwebpack.config.jsconstpath=require("path");constMergeIntoSingleFilePlugin=require('webpack-merge-and-include-globally');module.exports={mode:'none',e......
  • The experimental results for the paper entitled "Global convergence in modified
    ......
  • js查缺补漏——引用类型对象和数组
    一、什么是引用类型——Object引用类型是一种数据结构,而对象是引用类型的实例。有时候也叫对象定义,包含对象的属性和方法。Object是原生引用类型之一。创建对象实例的方法:1.使用new操作符varobj=newObject()obj.name="aaa"obj.age=122.使用对象字面量的......
  • 解决React中的Hooks闭包陷阱
    React中的Hooks闭包陷阱是一个常见的问题,主要发生在useState和useEffect等Hooks的使用过程中。以下是一些解决React中Hooks闭包陷阱的方法:一、理解闭包陷阱的成因useState中的闭包陷阱useState的参数只会在组件挂载时执行一次,这意味着如果我们在useState的回调函数中使用了外部变量......
  • JAVA基础知识补漏
    变量类型1.类变量:static2.实例变量:需要new3.局部变量:必须初始化常量final一般用大写表示命名规范所有变量、方法、类名:见名知意类成员变量:首字母小写和驼峰原则:monthSalary局部变量:首字母小写和驼峰原则常量:大写字母和下划线:MAX_VALUE类名:首字母大写和驼峰原则......
  • 17.Python基础篇-闭包、装饰器、迭代器、生成器
    函数的进阶—闭包闭包的定义:嵌套函数,内部函数调用外部函数的变量。满足这个条件就算闭包。闭包案例演示:defouter():a=1definner():print('inner函数中打印的变量a:',a)#嵌套函数中使用了外层函数的变量。此时满足了闭包的条件。returninner......
  • python中global关键字的作用
    python中global关键字的作用python中初始化一个变量y_axis_RA=[]一个函数中给y_axis_RA赋值,但是该变量显示未使用,在另外一个函数中使用y_axis_RA提示变量为空在Python中,变量作用域的问题可能会导致你遇到的情况。如果你在函数外部初始化了一个变量y_axis_RA=[],然后在函数......
  • Python闭包和保存自由变量
    1.闭包:用函数代替类术语闭包(closure)来自抽象代数。抽象代数里,一集元素称为在某个运算(操作)之下封闭,如果将该运算应用于这一集合中的元素,产出的仍然是该集合中的元素。然而在Python社区中还用术语“闭包”表述于此一个毫不相干的概念。注意我们文章中所称的闭包为Python中的闭包......
  • 闭包
    闭包闭包(closure)是一个函数以及捆绑的周边环境状态(lexicalenvironment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在JavaScript中,闭包会随着函数的创建而被同时创建。词法作用域请看下面代码:functioninit(){varname="Mozilla";......
  • Codeforces Global Round 19 E. Best Pair
    \(cnt\)的取值种类数不超过\(\sqrtn\)。因此我们可以枚举\(cnt\)然后贪心选最大的值。#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineinti64usingvi=vector<int>;usingpii=pair<int,int>;voidsolve()......