首页 > 其他分享 >js知识点学习01

js知识点学习01

时间:2023-08-23 23:12:21浏览次数:61  
标签:function 知识点 01 console log js arguments var return

js知识点学习01

1.arguements对象

(1) 什么是arguements对象?

由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。这就是arguments对象的由来。

(2) 怎么使用?

arguments对象包含了函数运行时的所有参数,arguments[0]就是第一个参数,arguments[1]就是第二个参数,以此类推,不存在的为undefined。这个对象只有在函数体内部,才可以使用。

function fun(one) {
    console.log(arguments[0]);
    console.log(arguments[1]);
    console.log(arguments[2]);
    console.log(arguments[3]);
}
fun(0,1,2)
//0
//1
//2
//undefined

正常模式下,arguments对象可以在运行时修改。

var f = function(a, b) {
    arguments[0] = 4;
    arguments[1] = 5;
    return a + b;
}
console.log(f(2, 3) )// 9

严格模式下,arguments对象在运行被修改无效。

var f = function(a, b) {
    'use strict'
    arguments[0] = 4;
    arguments[1] = 5;
    return a + b;
}

console.log(f(2, 3) )// 5

argumentslength属性

function f() {
    return arguments.length;
}

console.log(f(1,2,3,4));//4
console.log(f(1,2));//2
console.log(f());//0

(3) 与数组的关系

arguments看着像数组,其实是对象,数组的方法不能在arguments对象上直接使用。

如果想让arguments对象使用数组方法,需要先转换为数组。

方法1:使用slice

function f() {
    // return arguments.length;
    var args = Array.prototype.slice.call(arguments)
    console.log(args)//[ 1, 2, 3, 4 ]
}

f(1,2,3,4);

方法2:或者遍历使用数组的push方法

function f() {
    // return arguments.length;
    // var args = Array.prototype.slice.call(arguments)
    var args = []
    for (let i=0;i<arguments.length;i++){
        args.push(arguments[i])
    }
    console.log(args)//[ 1, 2, 3, 4 ]
}

f(1,2,3,4);//4

2. 函数的闭包

(1)定义

闭包就是能够读取其他函数内部变量的函数。

下面这段代码中,f2可以读取f1的变量,f2就可以视为一个闭包。

function f1() {
    var n = 999;
    function f2(){
        console.log(n);
    }
    return f2()
}
f1()//999

(2)闭包的用处

闭包的两大用处:

一是可以读取外层函数内部的变量

二是让这些变量始终保持在内存中,闭包使得内部变量记住上一次调用时的运算结果。

function createIncrementor(start) {
    return function (){
        return start++
    }
}
var inc = createIncrementor(5);
console.log(inc())//5
console.log(inc())//6
console.log(inc())//7
console.log(inc())//8

闭包可以封装对象的私有属性和私有方法

function Person(name) {
    var _age;//私有属性
    function setAge(n){
        _age = n;
    }
    function getAge() {
        return _age
    }
    return {
        name:name,
        getAge:getAge,
        setAge:setAge
    }
}
var p1 = Person('张三');
p1.setAge(24)
console.log(p1.getAge())//24

3.立即表达式

立即表达式及立即调用的表达式,简称IIFE(Immediately-Invoked Function Expression)

有两种写法

// 写法1
(function () {
    console.log(111)
    console.log(222)
}());
//写法2
(function () {
    console.log(333)
    console.log(444)
})();

标签:function,知识点,01,console,log,js,arguments,var,return
From: https://www.cnblogs.com/ma1998/p/17653004.html

相关文章

  • Vue和JSP的区别
    JSP简化的Servlet设计,在HTML标签中嵌套Java代码,用以高效开发Web应用的动态网页JSP 全名为 Java Server Pages,中文名叫 java 服务器页面,其根本是一个简化的 Servlet 设计,它是由Sun Microsystems 公司 倡导、许多公司参与一起建立的一种动态网页技术标准。JSP 技术是在传......
  • FastJson不成想还有个版本2啊:序列化大字符串报错
    背景发现陷入了一个怪圈,写文章的话,感觉只有大bug或比较值得写的内容才会写,每次一写就是几千字,争取写得透彻一些,但这样,我也挺费时间,读者也未必有这么多时间看。我想着,日常遇到的小bug、平时工作中的一些小的心得体会,都还是可以写写,这样也才是最贴近咱们作为一线开发生活的,也不必......
  • 基础入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA
    基础入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA目录基础入门-算法逆向&散列对称非对称&JS源码逆向&AES&DES&RSA&SHA安全测试中思路单向散列加密-MD5单向散列加密算法的优点有(以MD5为例):单向散列加密的缺点常见的单向散列加密算法有:MD5密文特点:解密需求:对称加密......
  • Fabric.js 元素选中状态的事件与样式
    本文简介带尬猴!你是否在使用Fabric.js时希望能在选中元素后自定义元素样式或选框(控制角和辅助线)的样式?如果是的话,可以放心往下读。本文将手把脚和你一起过一遍Fabric.js在对象元素选中后常用的样式设置。我将对象元素选中后的设置分成3类进行讲解:控制角辅助边其他样......
  • spring web mvc 集成 fastjson2
    maven依赖参考文档https://github.com/alibaba/fastjson2/blob/main/docs/spring_support_cn.md<!-spring5使用这个-><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2-extension-spring5</artifactId&......
  • JS判断字符串不为空:
    一:不为空functionisNotEmptyStr(strval){  if(typeofstrval=='string'&&strval.length>0){    returntrue  }  returnfalse}二:判断字符串为空:functionisEmptyStr(strval){  if(strval==null||strval==undefined||strval===......
  • JS 给json数组新增对象
    varjsonstr="[{'name':'a','value':1},{'name':'b','value':2}]";varjsonarray=eval('('+jsonstr+')');vararr={"name":$('#names').val(),&qu......
  • VA01/VA02/VA03/VA05 销售订单隐藏价格
    1、业务需求针对用户使用销售订单时,判断是否有权限,没有权限时隐藏销售订单抬头和行项目的价格相关字段2、增强实现2.1、隐藏抬头和行项目价格隐藏抬头和行项目表格中的净值和净价字段在程序MV45AFZZ→USEREXIT_FIELD_MODIFICATION中写隐式增强"--------------------@斌将......
  • 1001:Hello,World!
    1001:Hello,World!时间限制:1000ms      内存限制:65536KB提交数:345055   通过数:168663【题目描述】编写一个能够输出“Hello,World!”的程序,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经常用来测试开发、编译环境是否能够正常......
  • shell jq命令,解析 json 文件
    全局catt.json{"env_AB":{"DB_PATH":"/bin/data","DB_NAME":"aa.db","RULE_DB":[{ "RULE_DB_1":"bb_rules1.db", "RULE_DB_2":"......