热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaScript函數

JavaScript函數口試考點比較麋集參考阮一峰JavaScript函數我的博客:關於作用域,變量提拔,函數提拔的個人明白筆記1.函數的五種聲明體式格局1.1簽字函數var聲明一
Javascript函數

口試考點比較麋集
參考阮一峰Javascript函數
我的博客:關於作用域,變量提拔,函數提拔的個人明白筆記

1.函數的五種聲明體式格局

1.1 簽字函數

var 聲明一個變量,七種數據範例
function 聲明一個函數,是個慣例
不寫return自動加上return undefined

function f(x,y){
return x+y
}
f.name // 'f'

《Javascript函數》

1.1.1 關於console.log()

  1. console.log()返回undefined
  2. console.log()會在傳入的參數里起首挪用toString()要領
    《Javascript函數》
  3. 然則當打印到控制台的時刻,沒有寫雙引號,是chrome瀏覽器的緣由

《Javascript函數》

  1. 比方能夠在重寫console.log()

《Javascript函數》

1.2 匿名函數

var f
f = function(x,y){
return x+y
}
f.name // 'f'

假如要聲明匿名函數,就肯定要把它賦給一個變量
《Javascript函數》

1.3var x = function y(){}

var f
f = function f2(x,y){ return x+y }
f.name // 'f2'
console.log(f2) // undefined

直接聲明function y(){}var x = function y(){}的區分

《Javascript函數》
然後革新頁面

《Javascript函數》
直接報錯,說y沒有定義

區分:
《Javascript函數》
第一種體式格局能夠打印,第二種打印說不存在.
第一種全部表面的地區都能夠接見y,第二種只要函數內部才能夠接見到y.(能夠接見的地區就是綠色圈起來的地區)
《Javascript函數》

1.4 window.Function

window.Function
var f = new Function('x','y','return x+y')
f.name // "anonymous"

基礎不會用

1.5 箭頭函數

箭頭函數都是匿名函數,沒有名字,就像是匿名函數的簡寫情勢
《Javascript函數》
三種

箭頭函數
var f = (x,y) => {
return x+y
}
var sum = (x,y) => x+y//假如return只要一個,能夠省略return和{}
var n2 = n => n*n//假如參數只要一個,能夠省略()

《Javascript函數》

五種體式格局總結

《Javascript函數》

2.函數的name屬性

一切的函數都有一個name屬性,他是一個字符串


1簽字函數
function f(x,y){
return x+y
}
f.name // 'f'
2匿名函數
var f
f = function(x,y){
return x+y
}
f.name // 'f'
3簽字函數賦值
var f
f = function f2(x,y){ return x+y }
f.name // 'f2'
console.log(f2) // undefined
4window.Function
var f = new Function('x','y','return x+y')
f.name // "anonymous"
5箭頭函數
var f = (x,y) => {
return x+y
}
f.name//"f"

3.函數的實質

3.1函數的挪用

挪用的英文單詞call
函數在內存中為字符串

3.1.1函數在內存中:

《Javascript函數》
即函數也是一個對象,廣義上

3.1.2 eval()函數

給一個字符串.返回的為:字符串轉化成代碼然後實行.’
《Javascript函數》

3.1.3函數就是對象

模仿函數實質
《Javascript函數》
函數是一個對象,內里有參數,函數體,挪用要領
f是函數,是對象,f.call()是一個實行函數體的要領

總結

js中有七種數據範例,

number string boolean null undefined
symbol **object**

前六種是簡樸範例,object是前6種的種種組合,所以是龐雜範例
原型鏈
《Javascript函數》

3.1.4函數的挪用:f(1,2)f.call(undefined,1,2)

f(1,2)是簡樸用法
f.call(undefined,1,2)才是實在的用法

《Javascript函數》
用call 便於明白this,是硬核手藝
call用法:
《Javascript函數》
參數從第二個最先

4.thisarguments

《Javascript函數》

arguments是參數數組
《Javascript函數》

4.1 this

慣例:當call()的第一個參數是undefined的時刻, thiswindow.
《Javascript函數》

《Javascript函數》

當啟用嚴厲形式的時刻,call 里的第一個參數是什麼,this 就是什麼
《Javascript函數》
this的作用先不說

4.2 arguments是參數構成的偽數組

偽數組:內里有0123這些序次,也有length,長得像數組,然則.偽數組的__proto__沒有指向的是 Array.prototype,或者說原型鏈中沒有Array.prototype,即原型鏈中沒有和Array.prototype有關的 ,也就是說只是一個像數組的對象罷了.
《Javascript函數》
沒有 push

5 call stack 挪用棧

每進入一個函數,就在棧里紀錄一個暗號,當挪用完以後return的時刻,就跳到做的暗號那裡,彈出棧里的暗號
《Javascript函數》
挪用演示:
一般挪用
嵌套挪用
遞歸挪用

5.1 Stack Overflow毛病

客棧溢出
《Javascript函數》
超越call stack挪用棧

segment fault也是一種毛病,c言語內里的

6. 作用域

什麼情況下直接運用 a=1 會使a直接變成全局變量(window.a)?
當寫a=1這個代碼的時刻,起首盤算時機以為這是賦值,當發明當前作用域沒有聲明a的時刻,就繼承往上找,看看上一層的作用域有無聲明a,就這樣,一向找到window層即全局作用域層,就直接給全局變量window自動聲明一個a.
就近準繩,哪個scope離賦值近來,賦值的就是哪個作用域
我的博客:關於作用域,變量提拔,函數提拔的個人明白筆記

這個f4內里的a只能是他自身自身的作用與和他的父作用域,跟f1內里的a沒有關係
《Javascript函數》
f4打印出來的a是1

《Javascript函數》
一切的代碼剖析終了,這時刻i已是6.
所以當點擊的時刻,已是剖析終了后的i,點擊的時刻就是實行最最先綁定過的函數,點擊相當於在末了寫下實行函數的代碼,這時刻i已是6了,所以打印出來的是6.for輪迴完畢以後就是6.

liTags[i].Onclick= function(){
console.log(i)
}//在這裏只是聲明函數,並沒有挪用,運轉這段代碼只會剖析代碼,不會運轉函數
//當點擊事宜發作的時刻,就相當於挪用這個函數,當挪用的時刻,已被剖析成6了點擊速率不可能凌駕剖析速率

同理,下面代碼打印出的是6
《Javascript函數》

閉包定義

《Javascript函數》

問題

《Javascript函數》

《Javascript函數》

《Javascript函數》

《Javascript函數》

《Javascript函數》
《Javascript函數》

《Javascript函數》

《Javascript函數》
慣例:當call()的第一個參數是undefined的時刻, thiswindow.


推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • Android获取app应用程序大小的方法
    Android获取app应用程序大小的方法-Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。 ... [详细]
  • WPF之Binding初探
      初学wpf,经常被Binding搞晕,以下记录写Binding的基础。首先,盗用张图。这图形象的说明了Binding的机理。对于Binding,意思是数据绑定,基本用法是:1、 ... [详细]
author-avatar
淀死鈊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有