2012-07-04 4 views
1

죄송합니다. 더 나은 정보를 찾을 수 없습니다.자바 스크립트 소스 코드에서 표현식 추적하기

var n = Math.floor(Math.random() * 10), 
    className; 

if (n === 1) { 
    className = "a"; 
} else if (n === 2) { 
    className = "b"; 
} else { 
    className = "c"; 
} 

document.querySelector("." + className); 

아이디어는 내가 특정 기능 (document.querySelector)로 전송 가능한 모든 문자열을 얻고 싶은 것입니다 :

것은 이제 우리가 자바 스크립트 코드 문자열이 있다고 있다고 가정 해 봅시다. 그래서 ['.a', '.b', '.c']을 받고 싶습니다. 또한 여러 변수가 포함되어 코드에서 여러 번 수정되어 목록이 훨씬 길어질 수 있습니다.

어떻게 파이썬에서 할 수 있습니까? 필자는 PyV8을 살펴 봤지만 문서가 없으므로 옵션이 아닙니다. 구형 인 python-spidermonkey와 동일합니다.

+0

귀하의 질문에 대한 답변이 아니지만 3 가지 옵션 만 있으면 자바 스크립트에서 이와 같은 결과를 얻으실 수 있습니다. 그렇지 않으면 결과가 'else'케이스로 실제로 비뚤어집니다 : 'Math.floor (Math.random() * 10 3) % 3' – buley

+0

당신은 항상 한 번에 하나의 클래스를'querySelectorAll'로 가져오고 있습니다. – Blaster

+0

JS에 대해 걱정하지 마십시오. 요점이 아닙니다. – seriousdev

답변

1

쉬운 문제는 아닙니다. 함수를 통해 가능한 모든 경로를 생성하려면 static code analysis을 찾고 있습니다. 다음 코드를 고려하는 방법과 경고가 실행 여부를 결정하는 자신에게 물어 :

var n = Math.floor(Math.random() * 10), 
if (Math.sqrt(n) > n) { 
    alert('a'); 
} 

컴퓨터가 Math.sqrt(n) 항상 n보다 작은 것을 "알고"하지 않습니다. 코드를 실행하지 않고 경고가 나타나지 않을 것이라고 어떻게 결정합니까?

간단한 경우 라이브러리에서 수행 할 수 있지만 기능에 수많은 경로가 있고 많은 기능을 사용하는 경우 정답을 얻으려면 상당한 분석이 필요합니다.

+0

네, 그게 전부입니다. 나는 그것을 성취 할 방법을 모른다. – seriousdev

+0

@ seriousdev : 어떤 문제를 해결하려고합니까? 단순히''className = ...''모든 라인의 코드를 검색해서리스트에 넣을 수는 없습니까? 주어진 문제를 해결하는 것은 과잉 일 수 있습니다. –

+0

변수의 이름조차 모르므로 아니요. 플러스 :'className = "toggle-"+ x'은 어떨까요? – seriousdev

0

글쎄, 당신은 몬테카를로 접근 방식을 취할 수 있습니다 : 전달 된 모든 인수를 document.querySelector에 기록하고 다양한 입력에 대해 코드를 실행하십시오.

+0

그럴 경우 : 무작위성, AJAX 호출 등 – seriousdev

+0

충분히 실행하면 임의성이 문제가되지 않습니다 .-) –

관련 문제