2차 버전으로 업그레이드 된 기념으로 포스팅을 열어봅니다 ㅎㅎ
Ver1.1에서 컨텐츠 업그레이드
1. 기능 목록 추가
2. 기능 추가
3. 분석 (다른 소프트웨어에서 이 기능을 구현한 것을 본 적이 없습니다. 저는 창의적이고 문제가 많습니다. 현재 분석 능력은 상대적으로 제한적입니다. 전역 함수 종속성만 분석할 수 있습니다. 복잡한 코드에서는 버그가 발생할 수 있습니다.)
4. for 문 분석 버그 수정
5. 구문 접기 버그 수정
6. 모두 축소 작업 방식 개선 ※ 행 개수가 너무 많을 때 충돌 방지를 위한 모두 확장 기능
7. 줄 번호 분석 메커니즘을 개선하여 줄 수가 너무 많을 때 충돌을 방지합니다
/* 전역 CSS */
* { padding:0px; 여백:0px; 글꼴 크기:13px; 글꼴 모음: Arial 宋体; }
본문 { overflow:auto; 테두리:0px 없음 검은색; 배경색:버튼면; }
li { 여백:0px 0px 0px 40px; 패딩:2px 4px; }
div { 글꼴 크기:13px; 줄 높이:14px; }
p { 글꼴 크기:13px; 줄 높이:14px; }
/* 클래스 CSS */
.codeRoot { line-height:14px; }
.quote { color:#999; }
.comments { color: #009090; }
.indent { margin-left:25px; }
.regexp { color:#F000F0; }
.keyWord { color:blue; }
.object { color:red; }
.method_property { color:#FF8000; }
.operator { color:#004000; }
.colsp { 글꼴 크기:12px; 너비:14px; 높이:14px; 오버플로:숨김; 테두리:1px 아웃셋 버튼페이스; 텍스트 정렬:가운데;
커서:포인터; 왼쪽 패딩:2px; }
.colsp2 { 글꼴 크기:12px; 너비:14px; 높이:14px; 오버플로:숨김; 테두리:1px 삽입 버튼페이스; 텍스트 정렬:가운데;
커서:포인터; 왼쪽 패딩:2px; 색상:빨간색!중요; 배경색:#E0FFF8!중요; }
/* 식별된 CSS */
#divTools { height:20px; border-bottom:1px solid #555; 왼쪽 패딩:15px; }
#divTools a { color:navy; 텍스트 장식:없음; 높이:20px; 줄 높이:20px; 패딩:0px 25px; }
#divTools a:hover { color:white; 배경색:네이비; 텍스트 장식:없음; 높이:20px; 줄 높이:20px; }
#divJSInput { display:none; 너비:600px; 높이:450px; 테두리:2px 시작 버튼페이스; 위치:절대; 배경-
color:buttonface; z-색인:2; }
#divJSInputTitle { color:white; 배경색:네이비; 높이:20px; 줄 높이:20px; 패딩:0px 10px; 커서:기본값; }
#txtJSInput { 너비:598px; 높이:406px; 오버플로:자동; 패딩:4px 8px; 배경색:흰색;}
#divJSInputBar { 높이:24px; 패딩:0px 4px; }
#divJSInputBar 입력 { 너비:110px; 높이:22px; 테두리:1px 솔리드 #555; 줄 높이:20px; }
#divMain { 너비:100%; 높이:500; 오버플로:숨김; 위치:상대적; }
#divJSOutputLineNo { 너비:32px; 높이:100%; 오버플로:숨김; 배경색:#DDD; 위치:절대; 왼쪽:0px; 상단:0px;
텍스트 정렬:오른쪽; }
#divJSOutputLineNo p { font-size:12px; 줄 높이:14px; }
#divJSOutputPlus { 너비:14px; 높이:100%; 오버플로:숨김; 배경색:#EEE; 위치:절대; 왼쪽:32px; 상단:0px; z
-색인:2; }
#divJSOutputPlus p { 글꼴 크기:12px; 줄 높이:14px; }
#divJSOutput { 배경색:흰색; 테두리:1px 삽입 버튼페이스; 높이:100%; 위치:절대; 왼쪽:45px; 상단:0px;
오버플로:스크롤; }
#divWaiting { display:none; 너비:400px; 높이:60px; 테두리:1px 솔리드 버튼페이스; 위치:절대; 배경-
색상:#E0F0F0; z-색인:3; 텍스트 정렬:가운데; 패딩 상단:10px; }
#div입력 대기 중 { width:140px; 높이:22px; 테두리:1px 솔리드 #555; 줄 높이:20px; 커서:기본값; 여백 상단:4px; }
#divJSExport { display:none; 너비:600px; 높이:450px; 테두리:2px 시작 버튼페이스; 위치:절대; 배경-
color:buttonface; z-색인:2; }
#divJSExportTitle { color:white; 배경색:네이비; 높이:20px; 줄 높이:20px; 패딩:0px 10px; 커서:기본값; }
#selJSExport { 너비:598px; 높이:406px; 오버플로:자동; 패딩:4px 8px; 배경색:흰색; }
#divJSExportContent { 너비:598px; 높이:406px; 오버플로:자동; 패딩:4px 8px; 배경색:흰색; 표시:없음; }
#divJSExportBar { 높이:24px; 패딩:0px 4px; }
#divJSExportBar 입력 { 너비:170px; 높이:22px; 테두리:1px 솔리드 #555; 줄 높이:20px; }
<script> <BR>/********************** <BR> Author: Hutia <br><br>*********************/ <br><br>window.onload=init; <br><br><BR>//------------------ <BR>// Static Variable <BR>//------------------ <br><br>var KEYWORDS="abstract break byte case catch char class const continue default delete do double else extends false final <BR>finally float for function goto if implements import in instanceof int interface long native null package private protected <BR>public reset return short static super switch synchronized this throw transient true try var void while with"; <BR>var OBJECTS="Anchor Applet Area Arguments Array Boolean Button Checkbox Collection Crypto Date Dictionary Document Drive <BR>Drives Element Enumerator Event File FileObject FileSystemObject FileUpload Folder Folders Form Frame Function Global Hidden <BR>History HTMLElement Image Infinity Input JavaArray JavaClass JavaObject JavaPackage JSObject Layer Link Math MimeType <BR>Navigator Number Object Option Packages Password Plugin PrivilegeManager Random RegExp Screen Select String Submit Text <BR>Textarea URL VBArray Window WScript"; <BR>var METHODS_PROPERTIES="above abs acos action activeElement alert alinkColor all altKey anchor anchors appCodeName applets <BR>apply appName appVersion arguments arity asin assign atan atan2 atob availHeight availLeft availTop availWidth ActiveXObject <BR>back background below bgColor big blink blur bold border borderWidths bottom btoa button call callee caller cancelBubble <BR>captureEvents ceil charAt charCodeAt charset checked children classes className clear clearInterval clearTimeout click <BR>clientInformation clientX clientY close closed colorDepth compile complete concat confirm constructir contains contextual <BR>cookie cos crypto ctrlKey current data defaultCharset defaultChecked defaultSelected defaultStatus defaultValue description <BR>disableExternalCapture disablePrivilege document domain E Echo element elements embeds enabledPlugin enableExternalCapture <BR>enablePrivilege encoding escape eval event exec exp expando FromPoint fgColor fileName find fixed floor focus fontColor <BR>fontSize form forms forward frames fromCharCode fromElement getAttribute get getClass getDate getDay getFullYear getHours <BR>getMember getMilliseconds getMinutes getMonth getSeconds getSelection getSlot getTime getTimezoneOffset getUTCDate getUTCDay <BR>getUTCFullYear getUTCHours getUTCMilliseconds getUTCMinutes getUTCMonth getUTCSeconds getWindow getYear global go HandleEvent <BR>Height hash hidden history home host hostName href hspace id ids ignoreCase images index indexOf inner innerHTML innerText <BR>innerWidth insertAdjacentHTML insertAdjacentText isFinite isNAN italics java javaEnabled join keyCode Links LN10 LN2 LOG10E <BR>LOG2E lang language lastIndex lastIndexOf lastMatch lastModified lastParen layers layerX layerY left leftContext length link <BR>linkColor load location locationBar log lowsrc MAX_VALUE MIN_VALUE margins match max menubar method mimeTypes min modifiers <BR>moveAbove moveBelow moveBy moveTo moveToAbsolute multiline NaN NEGATIVE_INFINITY name navigate navigator netscape next <BR>number offscreenBuffering offset offsetHeight offsetLeft offsetParent offsetTop offsetWidth offsetX offsetY onabort onblur <BR>onchange onclick ondblclick ondragdrop onerror onfocus onHelp onkeydown onkeypress onkeyup onload onmousedown onmousemove <BR>onmouseout onmouseover onmouseup onmove onreset onresize onsubmit onunload open opener options outerHeight outerHTML <BR>outerText outerWidth POSITIVE_INFINITY PI paddings pageX pageXOffset pageY pageYOffset parent parentElement parentLayer <BR>parentWindow parse parseFloat parseInt pathname personalbar pixelDepth platform plugins pop port pow preference previous <BR>print prompt protocol prototype push random readyState reason referrer refresh releaseEvents reload removeAttribute <BR>removeMember replace resizeBy resizeTo returnValue reverse right rightcontext round SQRT1_2 SQRT2 screenX screenY scroll <BR>scrollbars scrollBy scrollIntoView scrollTo search select selected selectedIndex self setAttribute setDay setFullYear <BR>setHotkeys setHours setInterval setMember setMilliseconds setMinutes setMonth setResizable setSeconds setSlot setTime <BR>setTimeout setUTCDate setUTCFullYear setUTCHours setUTCMillseconds setUTCMinutes setUTCMonth setUTCSeconds setYear <BR>setZOptions shift shiftKey siblingAbove siblingBelow signText sin slice smallsort source sourceIndex splice split sqrt src <BR>srcElement srcFilter status statusbar stop strike style sub submit substr substring suffixes sun sup systemLanguage TYPE <BR>tagName tags taint taintEnabled tan target test text title toElement toGMTString toLocaleString toLowerCase toolbar top <BR>toString toUpperCase toUTCString type typeOf UTC unescape unshift untaint unwatch userAgent userLanguage value valueOf <BR>visibility vlinkColor vspace watch which width window write writeln x y zIndex"; <BR>var OPS="! $ % & * + - // / : < = > ? [ ] ^ | ~ is new sizeof typeof unchecked"; <br><br>var regKW=new RegExp("(\\W"+KEYWORDS.replace(/ /g,"$)|(\\W")+"$)","g"); <BR>var regObj=new RegExp("(\\W"+OBJECTS.replace(/ /g,"$)|(\\W")+"$)","g"); <BR>var regMP=new RegExp("(\\W"+METHODS_PROPERTIES.replace(/ /g,"$)|(\\W")+"$)","g"); <BR>//var regOP=new RegExp("(\\W"+OPS.replace(/ /g,"$)|(\\W")+"$)","g"); <br><br>//------------------ <BR>// Global Variables <BR>//------------------ <BR>var divJSInput, txtJSInput, divMain, divJSOutputLineNo, divJSOutputPlus, divJSOutput, divWaiting; <BR>var spnProcess, cmdStop, divJSExport, selJSExport, divJSExportContent; <BR>var glbStr, glbP, glbRe, curRe, glbTimer, glbBusy, glbFuntionNames; <br><br><BR>function init(){ <BR> // init global variables <BR> divJSInput=document.getElementById("divJSInput"); <BR> txtJSInput=document.getElementById("txtJSInput"); <BR> divMain=document.getElementById("divMain"); <BR> divJSOutputLineNo=document.getElementById("divJSOutputLineNo"); <BR> divJSOutputPlus=document.getElementById("divJSOutputPlus"); <BR> divJSOutput=document.getElementById("divJSOutput"); <BR> divWaiting=document.getElementById("divWaiting"); <BR> spnProcess=document.getElementById("spnProcess"); <BR> cmdStop=document.getElementById("cmdStop"); <BR> divJSExport=document.getElementById("divJSExport"); <BR> selJSExport=document.getElementById("selJSExport"); <BR> divJSExportContent=document.getElementById("divJSExportContent"); <br><br> // 창 상태 초기화 <BR> maximizeWindow(); <br><br> divMain.style.width=document.body.clientWidth-4; <BR> divMain.style.height=document.body.clientHeight-26; <br><br> divJSOutput.style.width=document.body.clientWidth-72; <br><br> <BR> // 전역 이벤트 초기화 <br><br>divJSOutputLineNo.onselectstart=divJSOutputLineNo.onselect=divJSOutputPlus.onselectstart=divJSOutputPlus.onselect=cancelEvent <br><br> divJSOutput .onscroll=divJSOutput_onscroll; <br><br> divJSInput.onkeydown=divJSInput_keydown; <BR> divJSExport.onkeydown=divJSExport_keydown; <br><br>} <br><br><BR>//------ <BR>// 이벤트 스크립트 <BR>//-- ---------------- <br><br>function cancelEvents(e){ <BR> var e=window.event?window.event:e; <BR> e.returnValue=false; <BR> 반품(거짓); <BR>} <br><br>function divJSInput_keydown(e){ <BR> var e=window.event?window.event:e; <BR> var srcEle=e.srcElement?e.srcElement:e.target; <BR> var sel; <BR> if(e.keyCode==27)hideJSInput(); <BR> if(e.keyCode==13&&e.ctrlKey)execJSInput(); <BR> if(e.keyCode==9&&srcEle==txtJSInput){ <BR> document.selection.createRange().text="t";return(false); // FF를 지원하지 않음 <BR> } <BR>} <br><br>function divJSExport_keydown(e){ <BR> var e=window.event?window.event:e; <BR> var srcEle=e.srcElement?e.srcElement:e.target; <BR> var sel; <BR> if(e.keyCode==27)hideJSExport(); <BR> if(e.keyCode==13&&e.ctrlKey)hideJSExport(); <BR>} <br><br>함수 divJSOutput_onscroll(){ <BR> divJSOutputLineNo.scrollTop=divJSOutputPlus.scrollTop=divJSOutput.scrollTop; <BR>} <br><br><br><br>//------ <BR>// 기능적 스크립트 <BR>//-- ---------------- <br><br>function showJSInput(){ <BR> if(glbBusy)return; <BR> hideJSExport(); <BR> with(divJSInput.style){ <BR> display="block"; <BR> left=(document.body.clientWidth-divJSInput.offsetWidth)/2; <BR> top=(document.body.clientHeight-divJSInput.offsetHeight)/2; <BR> } <br><br> txtJSInput.focus(); <br><br> 반품(false); <BR>} <br><br>function showJSExport(){ <BR> if(glbBusy)return; <BR> hideJSInput(); <BR> with(divJSExport.style){ <BR> display="block"; <BR> left=(document.body.clientWidth-divJSExport.offsetWidth)/2; <BR> top=(document.body.clientHeight-divJSExport.offsetHeight)/2; <BR> } <BR> divJSExportContent.style.display="none"; <BR> selJSExport.style.display="block"; <br><br> selJSExport.focus(); <BR> 반품(거짓); <BR>} <br><br>function hideJSInput(){ <BR> divJSInput.style.display="none"; <BR>} <br><br>함수 hideJSExport(){ <BR> divJSExport.style.display="none"; <BR>} <br><br>함수 execJSInput(){ <BR> hideJSInput(); <br><br> divJSOutput.innerHTML=""; <BR> divJSOutputLineNo.innerHTML=""; <BR> divJSOutputPlus.innerHTML=""; <br><br> glbStr=txtJSInput.innerText; // FF를 지원하지 않음 <BR> glbP=0; <BR> glbFuntionNames=new Array(); <BR> curRe=glbRe=document.createElement("div"); <br><br> divJSOutput.appendChild(glbRe); <BR> glbRe.className="codeRoot"; <br><br> while(selJSExport.options.length>0)selJSExport.options[0]=null; <br><br> showWait(startRecalcLine); <BR> core_analytic(); <BR>}<br><br>함수 execJSExport(){ <BR> var fns=new Array(), fcs=new Array(), str; <br><br> for(var i=0; i<selJSExport.options.length; i ){ <BR> if(selJSExport.options[i].selected){ <BR> fns.push(selJSExport.options[ i].값); <BR> str=selJSExport.options[i].obj.outerHTML; <BR> 시도해 보세요{ <BR> str =selJSExport.options[i].obj.nextSibling.outerHTML; <BR> str =selJSExport.options[i].obj.nextSibling.nextSibling.outerHTML; <BR> }catch(e){} <BR> fcs.push(str); <BR> } <BR> } <BR> if(fns.length==0)return; <br><br> divJSExportContent.style.display="block"; <BR> selJSExport.style.display="none"; <br><br> divJSExportContent.innerHTML=fcs.join("rn<br>rn"); <BR>} <br><br>함수 execJSExport_Dep(){ <BR> var fns=new Array(), fcs=new Array(), str, regFNs=new Array(), needDepthTest; <br><br> for(var i=0; i<selJSExport.options.length; i ){ <BR> if(selJSExport.options[i].selected){ <BR> fns.push(selJSExport.options[ i].값); <BR> 시도해 보세요{ <BR> str=selJSExport.options[i].obj.nextSibling.outerHTML; <BR> }catch(e){} <BR> fcs.push(str); <BR> } <BR> } <BR> if(fns.length==0)return; <br><br> divJSExportContent.style.display="none"; <BR> selJSExport.style.display="block"; <br><br> needDepthTest=false; <BR> for(var i=0;i<glbFuntionNames.length;i =1){ <BR> if(!selJSExport.options[i].selected){ <BR> for(j=0;j<fcs. length;j ){ <BR> if(html2txt(fcs[j]).match(glbFuntionNames[i].replace(/./g,"\."))){ <BR> selJSExport.options[i]. 선택됨=참; <BR> needDepthTest=true; <BR> 휴식; <BR> } <BR> } <BR> } <BR> } <BR> if(needDepthTest)execJSExport_Dep(); <BR>} <br><br><BR>function showWait(onstop){ <BR> glbBusy=true; <BR> document.body.style.cursor="wait"; <br><br> with(divWaiting.style){ <BR> display="block"; <BR> left=(document.body.clientWidth-divWaiting.offsetWidth)/2; <BR> top=(document.body.clientHeight-divWaiting.offsetHeight)/2; <BR> } <BR> spnProcess.innerHTML="0.00% ( 0 / 0 )"; <BR> divWaiting.onstop=onstop; <BR> cmdStop.focus(); <BR> 반품(거짓); <BR>}<br><br>함수 hideWait(){ <BR> glbBusy=false; <BR> document.body.style.cursor=""; <BR> divWaiting.style.display="none"; <BR> try{clearTimeout(glbTimer);}catch(e){} <BR> try{divWaiting.onstop();}catch(e){} <BR> return(false); <BR>} <br><br>function stopExec(){ hideWait(); } <br><br>함수 startRecalcLine(){ <BR> var re="", re2=""; <BR> if(glbBusy)return; <BR> glbBusy=true; <br><br> for(var i=0;i<parseInt(divJSOutput.scrollHeight/14 200);i ){ <BR> re ="<p>" (i 1) ""; <BR> re2 ="<p> "; <BR> } <br><br> divJSOutputLineNo.innerHTML=re; <BR> divJSOutputPlus.innerHTML=re2; <BR> divJSOutputPlus.buttons=new Array(); <br><br> glbP=0; <br><br> showWait(); <BR> recalcLine(); <BR> 반품(거짓); <br><br>} <br><br><BR>function recalcLine(){ <BR> var objs, j; <br><br> objs=document.getElementsByTagName("div"); <BR> for(var i=glbP;i<objs.length&&(i-glbP<30);i ){ <BR> if(objs[i].className=="indent"){ <BR> j=parseInt (objs[i].offsetTop/14)-1; <BR> divJSOutputPlus.childNodes[j].className="colsp"; <BR> divJSOutputPlus.childNodes[j].innerHTML="-"; <BR> divJSOutputPlus.childNodes[j].linkedDIV=objs[i]; <BR> divJSOutputPlus.childNodes[j].startIndex=j 1; <BR> divJSOutputPlus.childNodes[j].endIndex=j Math.round(objs[i].offsetHeight/14); <BR> if(objs[i].innerHTML!="")divJSOutputPlus.childNodes[j].endIndex ; <BR> divJSOutputPlus.childNodes[j].switchDIV=divJSOutputPlus.childNodes[j].onclick=switchDIV; <BR> divJSOutputPlus.buttons.push(divJSOutputPlus.childNodes[j]); <BR> } <BR> } <BR> spnProcess.innerHTML=parseFloat(glbP/objs.length*100).toFixed(2) "% ( " glbP " / " objs.length " )"; <BR> if(i<objs.length){glbP=i; glbTimer=setTimeout(recalcLine); return;} <BR> stopExec(); <BR> divJSOutput_onscroll(); <BR>} <br><br>function switchDIV(disp){ <BR> var y, obj; <BR> if((this.className=="colsp"||disp=="hide")&&disp!="표시"){ <BR> this.className="colsp2"; <BR> this.innerHTML=" "; <BR> for(var i=this.startIndex;i<this.endIndex;i ){ <BR> divJSOutputLineNo.childNodes[i].style.display="none"; <BR> divJSOutputPlus.childNodes[i].style.display="none"; <BR> } <BR> this.linkedDIV.style.display="none"; <BR> }else{ <BR> this.className="colsp"; <BR> this.innerHTML="-"; <BR> this.linkedDIV.style.display="block"; <BR> for(var i=this.startIndex;i<this.endIndex;i ){ <BR> divJSOutputLineNo.childNodes[i].style.display="block"; <BR> divJSOutputPlus.childNodes[i].style.display="block"; <BR> if(divJSOutputPlus.childNodes[i].className=="colsp2"){ <BR> i=divJSOutputPlus.childNodes[i].endIndex-1; <BR> } <BR> } <BR> } <BR> divJSOutput_onscroll(); <BR>} <br><br>function collapseAll(index){ <BR> index=isNaN(parseInt(index))?0:parseInt(index); <BR> if(!divJSOutputPlus.buttons)return; <BR> if(index<0)index=0; <BR> if(index>divJSOutputPlus.buttons.length)return; <BR> for(var i=index;i<divJSOutputPlus.buttons.length&&i-index<10;i )divJSOutputPlus.buttons[i].switchDIV("hide"); <BR> setTimeout("collapseAll(" i ")"); <BR>} <br><br>function expandAll(index){ <BR> index=isNaN(parseInt(index))?0:parseInt(index); <BR> if(!divJSOutputPlus.buttons)return; <BR> if(index<0)index=0; <BR> if(index>divJSOutputPlus.buttons.length)return; <BR> for(var i=index;i<divJSOutputPlus.buttons.length&&i-index<10;i )divJSOutputPlus.buttons[i].switchDIV("show"); <BR> setTimeout("expandAll(" i ")"); <BR>} <br><br><BR>함수 코어_분석(){ <BR> var str=" ", c="", lastState="", seq, intNextQuote, intTemp, intCount, intWordStart; <BR> spnProcess.innerHTML=parseFloat(glbP/glbStr.length*100).toFixed(2) "% ( " glbP " / " glbStr.length " )"; <BR> for(var i=glbP;i<glbStr.length;i ){ <BR> c=glbStr.charAt(i); <BR> str =htmlEncode(c); <BR> 스위치(c){ <BR> case "r": case " ": case "t": <BR> if(lastState=="rn"){str=" ";break;} <BR> str =str.substring(0,str.length-htmlEncode(c).length); <BR> if(lastState=="blank")break; <BR> if(c.match(/W/)&&glbStr.charAt(i-1).match(/w/)){ <BR> str=str.replace(regKW,clKW).replace(regObj,clObj) .replace(regMP,clMP); <BR> } <BR> str =htmlEncode(c); <BR> lastState="blank"; <BR> 휴식; <BR> 사례 ";": <BR> if(str.match(/Wfor.*?(/i))break; <BR> // 주의 여기에는 중단이 없습니다 <BR> 사례 "n": <BR> if(lastState=="rn"){str=" ";break;}<BR> outputLn(str); <BR> str=" "; <BR> lastState="rn"; <BR> if(i-glbP>200){ <BR> glbP=i 1; <BR> glbTimer=setTimeout(core_analytic); <BR> 반품; <BR> } <BR> 휴식; <BR> 사례 """: <BR> intNextQuote=i; <BR> while(intNextQuote!=-1&&intNextQuote<glbStr.length){ <BR> intNextQuote=glbStr.indexOf(""",intNextQuote 1); <BR> if(intNextQuote==-1||glbStr.charAt(intNextQuote-1)!="\")break; <BR> intCount=0; intTemp=intNextQuote; <BR> while(glbStr.charAt(--intTemp)=="\")intCount ; <BR> if(intCount%2==0)break; <BR> } <BR> if(intNextQuote==-1)break; <BR> str ="<span class="quote">" htmlEncode(glbStr.substring(i 1,intNextQuote)) """; <BR> i=intNextQuote; <BR> lastState=""; <BR> break; 케이스 "'": <BR> intNextQuote=i; <BR> while(intNextQuote!=-1&&intNextQuote<glbStr.length){ <BR> intNextQuote=glbStr.indexOf("'",intNextQuote 1) <BR> if(intNextQuote==-1| |glbStr.charAt(intNextQuote-1)!="\")break; <BR> intCount=0; <BR> while(glbStr.charAt(--intTemp)=="\")intCount ; 🎜> if(intCount%2==0)break <BR> }<BR> if(intNextQuote==-1)break; <BR> str ="<span class="quote">" htmlEncode(glbStr.substring(i 1,intNextQuote)) "'"; <BR> i=intNextQuote; <BR> lastState=""; <BR> 휴식; <BR> 케이스 "/": <BR> if(glbStr.charAt(i 1)=="/"){ <BR> intNextQuote=i; <BR> intNextQuote=glbStr.indexOf("rn",intNextQuote 1); <BR> if(intNextQuote==-1)intNextQuote=glbStr.length; <BR> str=str.substring(0,str.length-1); <BR> str ="<span class="comments">/" htmlEncode(glbStr.substring(i 1,intNextQuote)) <BR> ""; <BR> i=intNextQuote; <BR> }else if(glbStr.charAt(i 1)=="*"){ <BR> intNextQuote=i; <BR> intNextQuote=glbStr.indexOf("*/",intNextQuote 1); <BR> if(intNextQuote==-1)return; <BR> str=str.substring(0,str.length-1); <BR> str ="<span class="comments">/" htmlEncode(glbStr.substring(i 1,intNextQuote)) <BR> "*/"; <BR> i=intNextQuote 1; <BR> }else if(str.match(/[=(][ t]*//)){ <BR> intNextQuote=i; <BR> while(intNextQuote!=-1&&intQuote& lt;glbStr.length){ <BR>>> intCount=0; intTemp=intNextQuote; <BR> while(glbStr.charAt(--intTemp)=="\")intCount ; <BR> if(intCount%2==0)break; }<BR> if(intNextQuote==-1)break; <BR> str ="<span class="regexp">" htmlEncode(glbStr.substring(i 1,intNextQuote)) <BR> "/"; <BR> i=intNextQuote; <BR> lastState=""; <BR> } <BR> lastState=""; <BR> 휴식; <BR> 케이스 "{": <BR> outputLn(str); <BR> str=" "; <BR> seq=document.createElement("div"); <BR> seq.className="indent"; <BR> curRe.appendChild(seq); <BR> curRe=seq; <BR> lastState="rn"; <BR> if(i-glbP>200){ <BR> glbP=i 1; <BR> glbTimer=setTimeout(core_analytic); <BR> 반품; <BR> } <BR> 휴식; <BR> 케이스 "}": <BR> outputLn(str.substring(0,str.length-1)); <BR> str="} "; <BR> lastState=""; <BR> curRe=curRe.parentNode; <BR> 휴식; <BR> 기본값: <BR> if(c.match(/w/)&&glbStr.charAt(i-1).match(/W/)){intWordStart=i;} <BR> if(c.match(/ W/)&&glbStr.charAt(i-1).match(/w/)){ <BR> str=str.substring(0,str.length-htmlEncode(c).length); <BR> str=str.replace(regKW,clKW).replace(regObj,clObj).replace(regMP,clMP) htmlEncode(c); <BR> } <BR> lastState=""; <BR> 휴식; <BR> } <BR> } <br><br> if(i==glbStr.length){ <BR> if(str!=""){ outputLn(str); str=" "; } <BR> stopExec(); <BR> } <br><br>} <br><br>function outputLn(theStr){ <BR> var seq, txt, fn; <BR> if(html2txt(theStr).match(/^[ \t\r\n]*$/))return; <BR> seq=document.createElement("p"); <BR> seq.innerHTML=theStr; <BR> curRe.appendChild(seq); <br><br> txt=html2txt(theStr); <BR> if(!txt)return; <BR> fn=txt.match(/function[ \t\r\n]+([\.\w]+?)[ \t\r\n]*\(.*?\)[ \t\r\n]*\{/); <BR> if(fn){ <BR> glbFuntionNames.push(fn[1]); <BR> selJSExport.options[selJSExport.options.length]=new Option(fn[0]+"}",fn[1]); <BR> selJSExport.options[selJSExport.options.length-1].obj=seq; <BR> } <BR> fn=txt.match(/([\.\w]+?)[ \t\r\n]*=[ \t\r\n]*function\W*\(.*?\)[ \t\r\n]*\{/); <BR> if(fn){ <BR> glbFuntionNames.push(fn[1]); <BR> selJSExport.options[selJSExport.options.length]=new Option(fn[0]+"}",fn[1]); <BR> selJSExport.options[selJSExport.options.length-1].obj=seq; <BR> } <BR>} <br><br>function clKW(str){ return(str.charAt(0)+"<span class=\"keyWord\">"+str.substring(1)+""); } <br><br>function clObj(str){ return(str.charAt(0)+"<span class=\"object\">"+str.substring(1)+""); } <br><br>function clMP(str){ return(str.charAt(0)+"<span class=\"method_property\">"+str.substring(1)+""); } <br><br>function clOP(str){ return(str.charAt(0)+"<span class=\"operator\">"+str.substring(1)+""); } <br><br><BR>//------------------ <BR>// global scripts <BR>//------------------ <br><br>function maximizeWindow(){ <BR> window.moveTo(0,0); <BR> window.resizeTo(screen.availWidth,screen.availHeight); <BR>} <br><br>function htmlEncode(strS){ <BR> return(strS.replace(/&/g,"&").replace(/,"<").replace(/>/g,">").replace(/ /g," ").replace(/ <BR>\r\n/g,"<br\/>")); <BR>} <br><br>function html2txt(strS){ <BR> return(strS.replace(/<.+?>/g,"").replace(/,"<").replace(/>/g,">").replace(/ /g," ").replace(/<br\/? <BR>>/g,"\r\n").replace(/&/g,"&")); <BR>} <br><br></script>

javaandjavaScriptAredistIntLanguages : javaisusedforenterpriseandmobileApps, whilejavaScriptisforInciveWebPages.1) javaiscompiled, 정적으로 정적, Andrunsonjvm.2) javaScriptISNaterPreted, doineslicallytyted, andrunsinbrowsorsornode.js.3) javausepith

JavaScript 코어 데이터 유형은 브라우저 및 Node.js에서 일관되지만 추가 유형과 다르게 처리됩니다. 1) 글로벌 객체는 브라우저의 창이고 node.js의 글로벌입니다. 2) 이진 데이터를 처리하는 데 사용되는 Node.js의 고유 버퍼 객체. 3) 성능 및 시간 처리에는 차이가 있으며 환경에 따라 코드를 조정해야합니다.

javaScriptUSTWOTYPESOFSOFCOMMENTS : 단일 라인 (//) 및 multi-line (//)

Python과 JavaScript의 주요 차이점은 유형 시스템 및 응용 프로그램 시나리오입니다. 1. Python은 과학 컴퓨팅 및 데이터 분석에 적합한 동적 유형을 사용합니다. 2. JavaScript는 약한 유형을 채택하며 프론트 엔드 및 풀 스택 개발에 널리 사용됩니다. 두 사람은 비동기 프로그래밍 및 성능 최적화에서 고유 한 장점을 가지고 있으며 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

Python 또는 JavaScript를 선택할지 여부는 프로젝트 유형에 따라 다릅니다. 1) 데이터 과학 및 자동화 작업을 위해 Python을 선택하십시오. 2) 프론트 엔드 및 풀 스택 개발을 위해 JavaScript를 선택하십시오. Python은 데이터 처리 및 자동화 분야에서 강력한 라이브러리에 선호되는 반면 JavaScript는 웹 상호 작용 및 전체 스택 개발의 장점에 없어서는 안될 필수입니다.

파이썬과 자바 스크립트는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구와 개인 선호도에 따라 다릅니다. 1. Python은 간결한 구문으로 데이터 과학 및 백엔드 개발에 적합하지만 실행 속도가 느립니다. 2. JavaScript는 프론트 엔드 개발의 모든 곳에 있으며 강력한 비동기 프로그래밍 기능을 가지고 있습니다. node.js는 풀 스택 개발에 적합하지만 구문은 복잡하고 오류가 발생할 수 있습니다.

javaScriptisNotBuiltoncorc; it'SangretedLanguageThatrunsonOngineStenWrittenInc .1) javaScriptWasDesignEdasAlightweight, 해석 hanguageforwebbrowsers.2) Endinesevolvedfromsimpleplemporectreterstoccilpilers, 전기적으로 개선된다.

JavaScript는 프론트 엔드 및 백엔드 개발에 사용할 수 있습니다. 프론트 엔드는 DOM 작업을 통해 사용자 경험을 향상시키고 백엔드는 Node.js를 통해 서버 작업을 처리합니다. 1. 프론트 엔드 예 : 웹 페이지 텍스트의 내용을 변경하십시오. 2. 백엔드 예제 : node.js 서버를 만듭니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

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

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.