JavaScript 함수가 영어로 매개변수를 수신하지만 js를 실행하지 않는 문제에 대한 심층 토론

PHPz
풀어 주다: 2023-04-06 11:39:24
원래의
620명이 탐색했습니다.

JavaScript는 널리 사용되는 프로그래밍 언어입니다. 가장 큰 장점은 웹 페이지와 상호 작용하는 프로그램을 작성하여 보다 풍부한 사용자 경험을 얻을 수 있다는 것입니다.

그 중에서도 JavaScript 기능은 매우 중요한 부분입니다. 함수를 사용하면 특정 코드 블록을 함께 패키지화한 다음 필요할 때 호출할 수 있습니다. 이렇게 하면 코드가 더 명확해지고 유지 관리 및 확장이 쉬워집니다. 동시에 함수를 호출할 때 함수에 매개변수를 전달하여 함수를 더욱 유연하고 다양하게 만들 수도 있습니다.

그러나 실제로 우리는 때때로 이상한 문제에 직면합니다. 즉, 우리의 JavaScript 함수는 영어 매개변수를 받을 수 있지만 JavaScript 코드를 실행할 수는 없습니다. 많은 사람들이 이 문제에 직면했을 수 있지만 해결 방법을 모릅니다.

다음으로 이 문제를 조사하고 몇 가지 해결 방법을 제공하겠습니다.

먼저 문제의 본질을 명확히 해야 합니다. 함수에 의해 수신된 매개변수는 일반 텍스트이므로 모든 사람에게 매우 명확해야 합니다. 함수 관점에서 볼 때 영어 매개변수와 중국어 매개변수 사이에는 차이가 없으며, JavaScript는 매개변수의 언어에 관심이 없습니다. 따라서 문제는 함수 실행 중에 발생해야 합니다. 부적절한 코드가 있는지 확인하려면 함수 구현을 주의 깊게 살펴봐야 합니다.

이제 간단한 예를 살펴보겠습니다.

function sayHello(name) {
  alert("Hello " + name);
}
로그인 후 복사

이것은 매개변수 이름을 받아들이고 이 매개변수를 사용하여 메시지 상자를 팝업하는 매우 기본적인 JavaScript 함수입니다. 이때, 이 함수를 호출하고 영어 매개변수를 전달하면, 예를 들어

sayHello("Tom");
로그인 후 복사

이 함수는 정상적으로 실행될 수 있으며, 팝업 메시지 상자의 내용은 "Hello Tom"입니다. 하지만 JavaScript 코드를 매개변수로 전달하면 어떻게 될까요? 예:

sayHello("<script>alert('Hello');</script>");
로그인 후 복사
로그인 후 복사

? 함수를 호출하면 함수가 올바르게 호출되었음에도 불구하고 팝업 메시지 상자의 내용이 예상한 "Hello"가 아니라 스크립트 태그처럼 보이는 텍스트임을 알 수 있습니다. 이는 함수가 전달된 자바스크립트 코드를 실행하지 않고, 직접 텍스트로 출력하기 때문이다.

그렇다면 이 문제를 어떻게 해결할 수 있을까요? 실제로 이 방법은 매우 간단합니다. 들어오는 매개변수만 인코딩하면 됩니다. 인코딩된 매개변수는 일반 텍스트이며, 그 안의 특수 문자는 이스케이프 처리되어 함수 실행에 아무런 영향을 미치지 않습니다. 일반적으로 사용되는 JavaScript 인코딩 기능에는 encodeURIComponent 및 encodeURI가 포함됩니다. 전자는 문자, 숫자 및 -_.!~*'() 이외의 문자를 인코딩하는 반면 후자는 / ? & @ + 와 같은 일부 특수 문자만 인코딩합니다. 어떤 인코딩 기능을 선택할지는 실제 상황에 따라 결정해야 합니다.

다시 작성한 함수는 다음과 같습니다.

function sayHello(name) {
  var encodedName = encodeURIComponent(name);
  alert("Hello " + encodedName);
}
로그인 후 복사

호출 방법도 이에 따라 변경됩니다.

sayHello("<script>alert('Hello');</script>");
로그인 후 복사
로그인 후 복사

이때 함수는 정상적으로 실행됩니다.

여기에서는 JavaScript 함수가 영어 매개변수를 수신하지만 JavaScript 코드를 실행하지 않는 문제에 대해 더 논의하고 해결 방법을 소개합니다. 이 기사가 함수와 JavaScript를 더 잘 이해하는 동시에 코드를 더욱 강력하고 안전하게 만드는 데 도움이 되기를 바랍니다.

위 내용은 JavaScript 함수가 영어로 매개변수를 수신하지만 js를 실행하지 않는 문제에 대한 심층 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!