찾다
웹 프론트엔드JS 튜토리얼javascript_javascript 스킬에 정의된 공통 함수의 차이점

자바스크립트에 정의된 일반적인 함수들 간의 차이점은 주로 다음 세 가지 측면을 통해 설명됩니다. 도움이 필요한 친구들이 참고할 수 있습니다

1: 키워드 함수를 호출하여
구성

예:

function distance(x1,x2,y1,y2) 
  { 
    var dx=x2-x1; 
    var dy=y2-y1; 
    return Math.sqrt(dx*dx+dy*dy); 
  } 

2: Function() 생성자 사용

예:

var f=new Function*"x","y","return x*y"); 

이 코드 줄은 익숙한 구문을 사용하여 정의된 함수와 본질적으로 동일한 새 함수를 생성합니다.

function f(x,y) 
  { 
    return x*y; 
  } 

Functino() 생성자는 문자열 매개변수를 원하는 만큼 받아들일 수 있습니다. 마지막 매개변수는 함수 본문으로, 세미콜론으로 구분된 모든 JavaScript 문을 포함할 수 있습니다. 기타 매개변수는 함수에서 정의할 형식 매개변수의 이름을 설명하는 데 사용되는 문자열입니다. 정의한 함수에 매개변수가 없으면 문자열(함수 본문)을 생성자에 전달하면 됩니다.

생성자 Function()에 전달된 매개변수 중 어느 것도 생성 중인 함수의 이름을 지정하지 않습니다. Function() 생성자로 생성된 이름 없는 함수를 "익명 함수"라고도 합니다.

Function() 생성자가 어떤 용도로 사용되는지 매우 궁금하실 수 있습니다. 왜 함수 명령문을 사용하여 모든 함수를 정의할 수 없나요? 그 이유는 Function() 생성자를 사용하면 함수 문의 미리 컴파일된 함수 본문으로 제한하지 않고 함수를 동적으로 빌드하고 컴파일할 수 있기 때문입니다. 이에 대한 부작용은 함수가 호출될 때마다 Function() 생성자가 이를 컴파일해야 한다는 것입니다. 따라서 루프 본문이나 자주 사용되는 함수에서 이 생성자를 자주 호출하면 안 됩니다.

Function() 생성자를 사용하는 또 다른 이유는 함수를 명령문으로 정의하는 대신 JavaScript 표현식의 일부로 정의할 수 있기 때문입니다.

3: 함수 리터럴

함수 리터럴은 익명 함수를 정의할 수 있는 표현식입니다. 함수 리터럴의 구문은 명령문이 아닌 표현식으로 사용된다는 점과 함수 이름을 지정할 필요가 없다는 점을 제외하면 함수 문의 구문과 매우 유사합니다. 다음 세 줄의 코드는 function() 문, Function() 생성자 및 함수 리터럴을 사용하여 기본적으로 동일한 세 가지 함수를 정의합니다.

function f(x){return x*x}; 
  var f=new Function("x","return x*x;"); 
  var f=function(x){reurn x*x}; 

함수 리터럴은 이름 없는 함수를 생성하지만 구문에서는 함수 이름을 지정할 수 있음도 지정합니다. 이는 자신을 호출하는 재귀 함수를 작성할 때 매우 유용합니다.

예:

var f=function fact(x){if(x<=1)return 1;else return x*fact(x-1);}; 

위 코드는 이름 없는 함수를 정의하고 해당 함수에 대한 참조를 변수 f에 저장합니다. 이는 실제로 사실()이라는 함수를 생성하지 않으며 단지 함수 본문이 이 이름으로 자신을 참조할 수 있도록 허용합니다. 그러나 이 명명된 함수 리터럴은 JavaScript 1.5 이전 버전에서는 올바르게 구현되지 않았습니다.

함수 리터럴의 사용법은 Function() 생성자를 사용하여 함수를 생성하는 방법과 매우 유사합니다. 명령문이 아닌 JavaScript 표현식으로 생성되므로 사용 방식이 더 유연하며, 특히 한 번만 사용되며 이름을 지정할 필요가 없는 함수의 경우 더욱 그렇습니다. 예를 들어, 함수 리터럴 표현식을 사용하여 지정된 함수는 변수에 저장되거나, 다른 함수에 전달되거나, 직접 호출될 수도 있습니다.

a[0]=function(x){return x*x;};//定义一个函数并保存它 
  a.sort(function(a,b){return a-b;});//定义一个函数;把它传递给另一个函数 
  var tensquared=(function(x){return x*x;})(10); 

  和Function()构造函数一样,函数直接量创建的是未命名函数,而且不会自动地将这个函数存储在属性中。但是,比起Function()构造函数来说,函数直接量有一个重要的优点。由Function()构造函数创建的函数的主体必须用一个字符串说明,用这种方式来表达一个长而复杂的函数是狠笨拙的。但是函数直接量的主体使用的却是标准的JavaScript语法。而且函数直接量只被解析一次,而作为字符串传递给Function()构造函数的JavaScript代码则在每次调用构造函数时只需被解析一次和编译一次。

     在JavaScript1.1中,可以使用构造函数Function()来定义函数,在JavaScript1.2和其后的版本中,还可以使用函数直接量来构造函数。你应该注意这两种方法之间的重要差别。

  首先,构造函数Function()允许在运行时动态地创建和编译JavaScript代码。但是函数直接量却是函数结构的一个静态部分,就像function语句一样。

  其次,作为第一个差别的必然结果,每次调用构造函数Function()时都会解析函数体并且创建一个新东汉数对象。如果对构造函数的调用出现在一个循环中,或者出现在一个经常被调用的函数中,这种方法的效率非常低。另一个方面,函数直接量或出现在循环和函数中的嵌套函数不是在每次调用时都被重新编译,而且每当遇到一个函数直接量时也不创建一个新的函数对象。

  Function()构造函数和函数之间量之间的第三点差别是,使用构造函数Function()创建的函数不使用词法作用域,相反的,它们总是被当作顶级函数来编译,就像下面代码所说明的那样:

 var y="global"; 
  function constructFunction() 
  { 
    var y="local"; 
    return new Function("return y");//不捕捉局部作用域。 
  } 
  //这行代码将显示"global",因为Function()构造函数返回的函数并不使用局部作用域。 
  //假如使用一个函数直接量,这行代码则可能显示"local"。 
  alert(constructFunction()); 

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
JavaScript函数异步编程:处理复杂任务的必备技巧JavaScript函数异步编程:处理复杂任务的必备技巧Nov 18, 2023 am 10:06 AM

JavaScript函数异步编程:处理复杂任务的必备技巧引言:在现代前端开发中,处理复杂任务已经成为了必不可少的一部分。而JavaScript函数异步编程技巧则是解决这些复杂任务的关键。本文将介绍JavaScript函数异步编程的基本概念和常用的实践方法,并提供具体的代码示例,帮助读者更好地理解和使用这些技巧。一、异步编程的基本概念在传统的同步编程中,代码按

使用JavaScript函数实现网页导航和路由使用JavaScript函数实现网页导航和路由Nov 04, 2023 am 09:46 AM

在现代Web应用程序中,实现网页导航和路由是十分重要的一环。利用JavaScript的函数来实现这个功能,可以使我们的Web应用程序更加灵活、可扩展和用户友好。本文将介绍如何使用JavaScript函数来实现网页导航和路由,并提供具体的代码示例。实现网页导航对于一个Web应用程序而言,网页导航是用户操作最频繁的一个部分。当用户点击页面上的

使用JavaScript函数实现数据可视化的实时更新使用JavaScript函数实现数据可视化的实时更新Nov 04, 2023 pm 03:30 PM

使用JavaScript函数实现数据可视化的实时更新随着数据科学和人工智能的发展,数据可视化已经成为了一种重要的数据分析和展示工具。通过可视化数据,我们可以更直观地理解数据之间的关系和趋势。在Web开发中,JavaScript是一种常用的脚本语言,具备强大的数据处理和动态交互功能。本文将介绍如何使用JavaScript函数实现数据可视化的实时更新,并展示具体

使用JavaScript函数实现用户登录和权限验证使用JavaScript函数实现用户登录和权限验证Nov 04, 2023 am 10:10 AM

使用JavaScript函数实现用户登录和权限验证随着互联网的发展,用户登录和权限验证成为了很多网站和应用程序的必备功能。为了保护用户的数据安全和访问权限,我们需要使用一些技术和方法来验证用户的身份,并限制其访问的权限。JavaScript作为一种广泛使用的脚本语言,在前端开发中扮演着重要的角色。我们可以利用JavaScript函数来实现用户登录和权限验证功

使用JavaScript函数实现图片轮播和幻灯片效果使用JavaScript函数实现图片轮播和幻灯片效果Nov 04, 2023 am 08:59 AM

JavaScript是一种脚本语言,可以用来为网页添加交互效果。其中,图片轮播和幻灯片效果是常见的网页动画效果,本文将介绍如何使用JavaScript函数实现这两种效果,并提供具体代码示例。图片轮播图片轮播是一种将多张图片按照一定的方式轮流播放的效果。在实现图片轮播时,需要用到JavaScript的定时器和CSS样式控制。(1)准备工作首先,在HTML文件中

使用JavaScript函数实现用户交互和动态效果使用JavaScript函数实现用户交互和动态效果Nov 03, 2023 pm 07:02 PM

使用JavaScript函数实现用户交互和动态效果随着现代网页设计的发展,用户交互和动态效果成为了吸引用户眼球的关键。JavaScript作为一种常用的脚本语言,拥有强大的功能和灵活的特性,能够实现各种各样的用户交互和动态效果。本文将介绍一些常见的JavaScript函数,并给出具体的代码示例。改变元素样式(style)通过JavaScript函数能够轻松改

使用JavaScript函数实现文件上传和下载使用JavaScript函数实现文件上传和下载Nov 04, 2023 am 08:30 AM

使用JavaScript函数实现文件上传和下载随着互联网的发展和普及,文件上传和下载成为了网页应用中常见的功能之一。本文将介绍如何使用JavaScript函数来实现文件上传和下载的功能,并提供具体的代码示例。文件上传文件上传指的是将本地的文件通过网页上传到服务器。HTML5中提供了FileAPI用于处理文件的选择和上传。我们可以利用FileAPI中的Fi

使用JavaScript函数实现数据可视化的动态更新使用JavaScript函数实现数据可视化的动态更新Nov 03, 2023 pm 04:56 PM

使用JavaScript函数实现数据可视化的动态更新数据可视化是大数据时代中非常重要的一环,它能够以直观的方式展示数据,帮助人们更好地理解和分析数据。而JavaScript作为一种客户端的脚本语言,能够通过函数的方式来实现数据可视化的动态更新。本文将介绍如何使用JavaScript函数来实现这一功能,并提供具体的代码示例。一、数据可视化基础在开始编写代码之前

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는