하지만 나중에 사람들에게 너무 많은 매개변수를 허용하기 때문에 스마트 프롬프트가 명확하게 작성되지 않으면 나조차도 사용법을 알 수 없는 경우가 많다고 말했습니다.
그러나 많은 매개 변수를 허용하면 잘못 사용하기 쉬울 뿐만 아니라 또 다른 문제가 발생할 수도 있습니다.
페이지 번호 렌더링 구성 요소 JS 버전의 전체 기능 서명을 살펴보겠습니다.
function pnView(
currentPage, actionCurrent,
beginPage, endPage,
actionBegin, actionEnd,
currentSiblings, actionCurrentSibling,
preventFolding , actionFolding,
endOfBegin, startOfEnd ,
actionBeginSibling, actionEndSibling
)
보시다시피 이 완전히 사용자 정의된 함수 시그니처는 14개의 매개변수를 허용하며 그 중 절반은 7개입니다. 콜백 함수를 수락하려면 매개변수가 필요합니다.
결과적인 문제는 다음과 같이 여러 "function(){}" 및 기타 문자 조합을 수동으로 작성해야 한다는 것입니다.
function ww(s) { document.write(s) }
function ws(n) { ww(' (' n ') ') }
pnView(14, function (n) { ww(' [' n '] ') },
1, 27 ,
함수 (n) { ww('| ') }, 함수 (n) { ww(' ' n ' >|') },
2, ws,
1, function () { ww(' ... ') }; 🎜 >2, 2,
ws, ws
)
이런 이유로 JS 코드를 변환하고 특정 패턴을 함수 정의로 변환할 수 있는 모듈을 작성했습니다.
이 모듈을 사용한 후 이전 호출은 다음과 같습니다.
var ww = (s, document.write(s));
var ws = (n, ww(' (' n ') '))
pnView(14, (n, ww(' [' n '] ')),
1, 27,
(n , ww('| ')), (n, ww(' ' n ' > |')),
2, ws,
1, (0, ww(' ... ')),
2, 2,
ws, ws
);
}.lamda())();
/*!
L-amda "a-Lambda" 모듈은 JavaScript에 대한 대체 "Lambda" 스타일 프로그래밍 기능을 제공합니다.
NanaLich가 제작했습니다. 2010-09-08
이 모듈은 WTFPL v2에 따라 게시되었으므로 원하는 Fxxx 작업을 수행하면 됩니다.
*/
!function () {
function attachmentEntry(o, a, m) {
var i, j, n;
o = [].concat(o);
//if (!(o 배열 인스턴스)) o = [o];
while (i = o.shift()) {
for (j in a) {
if (!i[n = a[j]]) i[n] = m;
}
}
}
var rx0 = /^s*(0|NaN|null)s*,$/;
var rx1 = /([W]s*)((s*0s*,|(?:s*[a-z_$][w$]*s*,) )|"(\[sS] |[^x22])*"|'(\[sS]|[^x27])*'/gi;
var rx2 = /)/g;
function rxGetFlags(rx) { // 取出正则表达式的创建选项
return (rx.global ? 'g' : '') (rx.ignoreCase ? 'i' : '') (rx.multiline ? '중' : '');
//return //([gim]*)$/.exec('' rx)[1];
}
attachEntry(RegExp, ['getFlags'], rxGetFlags);
attachEntry(RegExp.prototype, ['getFlags'], function () {
return rxGetFlags(this);
});
functiontranslateLambda(s) {
if (typeof(s) != 'string') s = '' s;
var x = new RegExp(rx1.source, rx1.getFlags());
var y = new RegExp(rx2.source, rx2.getFlags()); // 由于firefox, safari等浏览器对全局匹配正则表达式有过式弘化, 所以这里采用 一种迂回的办法创建不复复的正则表达式实예
var m, l = 0, r = '' ;
while (m = x.exec(s)) {
var c = m[0], h, p, q, t;
switch (c.charAt(0)) { // 判断期待的语法成分
case '$':
case ')':
case ']':
case '" ':
case "'":
continue; // 函数传参,跳过
}
h = m[2]
if (rx0.test(h ))
h = '';
else
h = h.substr(0, h.length - 1) // 去掉末尾적逗号
r = s.substring(l, p = m.index); // y.lastIndex = l = p c.length; // 从逗号 后开始寻找右括号
while (q = y .exec(s)) {
q = q.index;
try {
t = 'return ' s.substring(l, q) ';'
new Function(t); // 语法测试
//r = c 'function(' h '){ 'translateLambda(t) ' }' // 翻译里面적内容
r = m[1] 'function(' h ' ){ 'translateLambda(t) ' }'; // 翻译里面的内容
x.lastIndex = l = q 1; // 下一次查找从括号之后开始
break
} catch; ) { }
}
if (!q) l = p; // 说明找不到右括号或者有效的代码,直接附加所有匹配的内容
}
try {
r = s.substr(l);
if (/[w$]*|"(\[sS]|[^x22])*"|'(\[sS]|[^x27])*' /.exec(r)[0] == '함수') // 粗略判断产生的是不是函数(可以应付绝大分情况)
r = '0,' r // 使用这种“怪”형式可以현재所有浏览器(包括IE)中得到预期的效果
new Function(r); // 语法测试
return
} catch (ex) { // 失败,返回原文
s를 반환합니다;
}
};
var lamdaAliases = ["translateLambda", "lambda", "lamda"];
attachEntry([함수, 문자열], lamdaAliases, 번역Lambda);
attachEntry([Function.prototype, String.prototype], lamdaAliases, function () {
returntranslateLambda(this);
});
} ();
简单来说, 这个模块的规格特性是这样的——
优点:
减少编写代码时“함수”를 출력합니다
使JavaScript를 사용하는 방법 |模块道必须调사용转译方法(“translateLambda”、“ 람다” 또는 “람다”) 및 평가판 函数 , 无법성 略;
就是说a.lambda()或者类似的操作并不会让a((x, x * 2))等同于a(function(x){ return x * 2; }));
不能包含表达式之不胻何语句、不能包含使用“;”来分隔的多条语句.
缺点:
连续出现的括号可能会让代码变得难以理解;
任何编辑器无法为Lambda表达式提供语法高亮;
存在错误地转译现有代码的可能性——这个模块选择进行匹配的模式是는 正常的代码中没有实用价值, 也会常不可能性模式,如:(x, x * 2)等价于单纯的x * 2、(0, a.method())等价于单纯的a.method(),所以这个缺点影响到实际代码的可能性无限趋近于0。
以下是几种不当적 용법:
1、使用这个模块并不会节省很多代码时候:本末倒置。
2. 매개변수를 받는 함수 변환: 이 상황은 이전에 언급되었습니다.
코드 복사
JavaScript에서는 유효하지만 실질적인 가치가 없는 구문을 사용하므로 구문 검사를 피할 필요가 없습니다.
코드 복사
이 모듈을 설계할 때 여러 문을 사용하고 구문 검사를 통과할 수 있는 패턴을 찾지 못했습니다. 그 이유는 람다 표현식에서 여러 문을 사용할 때 "함수"에 의해 추가되는 코드의 양 때문입니다. "return"과 같은 소수의 문자는 일반적으로 무시할 수 있습니다. 이런 방식으로 람다 표현식을 사용하면 원래 의도에서 벗어납니다.
코드 복사
최고의 사용 사례:
이제 많은 사람들이 JavaScript를 작성할 때 클로저에 코드를 작성하는 것을 좋아합니다. 다음과 같이 전역 범위 오염 문제를 피하십시오.
코드를 복사하세요.
- 이 "큰" 클로저는 이 모듈을 사용합니다.
코드 복사
어제 Codeplex가 미쳤습니다. , 코드 및 릴리스 업로드에는 항상 오류가 있습니다. 본 모듈의 사용 사례가 상대적으로 제한적이고 JavaScript 경험이 부족한 사람들에게는 적합하지 않다는 점을 고려하여 소스 코드는 별도로 패키지되어 다운로드되지 않습니다. 필요한 경우 텍스트에서 직접 복사하십시오.

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

Python은 데이터 과학 및 기계 학습에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 간결한 구문 및 풍부한 라이브러리 생태계로 유명하며 데이터 분석 및 웹 개발에 적합합니다. 2. JavaScript는 프론트 엔드 개발의 핵심입니다. Node.js는 서버 측 프로그래밍을 지원하며 풀 스택 개발에 적합합니다.

JavaScript는 이미 최신 브라우저에 내장되어 있기 때문에 설치가 필요하지 않습니다. 시작하려면 텍스트 편집기와 브라우저 만 있으면됩니다. 1) 브라우저 환경에서 태그를 통해 HTML 파일을 포함하여 실행하십시오. 2) Node.js 환경에서 Node.js를 다운로드하고 설치 한 후 명령 줄을 통해 JavaScript 파일을 실행하십시오.


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

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

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
