var lengthFunc = function() {
var input = prompt("입력");
alert(input.length);
}
메서드는 아니고, String의 length 속성을 이용해, 입력한 문장의 단어 개수 출력하는 함수
var prequenFunc = function(){
let input = prompt("단어 개수를 셀 문장 입력");
let prequen = input.split(' ');
alert(prequen.length);
}
문장을 입력하면, 단어가 몇 개로 이루어져 있는지에 대한 함수를 string의 split 메서드를 사용해
세보기 , 발전한다면 객체를 이용, python에서 했던 단어 빈도 개수 세기랑 동일하게 작성한다면 동일한 기능을 할 것이다.
var ChangeWordFunc = function(){
let string = prompt("단어를 변경할 문장 입력");
let findWord = prompt("찾을 단어 입력");
let ChangeWord = prompt("변경할 단어 입력");
afterString = string.replace(findWord,ChangeWord);
alert("변경 전 : "+ string +"\n" + "변경 후" + afterString);
}
이 코드를 잘보면, afterString이라고 하는 변수를 하나가 있는데 var를 적어주지 않고 함수를 작성했으나
실행이 되었다. 그래서 왜 실행이 되었는지 찾아보니, var를 쓰지 않으면 상위 스코프를 계속 탐색하면서 이 변수가 선언이 되어있는지 선언이 돼있지 않은지 탐색한 후, 선언이 되어있지 않다면 자동으로 글로벌 변수로 선언한다고 한다.
어쨌든, 이 함수는 Word 문서에서 단어 바꾸기 기능을 모방해보려고 한 것이다.
예를 들어,
abcdfaaa 가 있을 때, 찾으려는 문자가 a 바꾸려는 문자가 b 라면,
bbcdfbbb 가 예상되는 결과 값일 것이다. 하지만, 실행을 시켜보면 bbcdfaaa로 결과 값이 나온다.
JavaScript에서의 replace는 가장 앞쪽의 문자만 바꿔주는 것 같다. 그래서 Java의 ReplaceAll을 생각하고 ,
메서드를 사용하려 하니, 메서드가 없어 검색해서 찾아낸 것이 두 가지였다.
1. 정규식 사용
정규식 사용으로 만들어보려 했으나, 변수를 포함한 정규식은 입력이 안 되는 것인지, 내가 못 찾는 것인지
되지를 않아서 replaceAll 메소드를 만들어 사용했다.
2. replaceAll을 만들어 사용
var replaceAll = function(str,oldStr,newStr) {
return str.split(oldStr).join(newStr);
}
oldStr, 즉 찾으려는 문자를 기준으로 잘라서 배열로 만들고, 그 배열 사이에 newStr 즉, 바꾸려는 문자를 이어 붙이는 것이다.
var ChangeWordFunc = function(){
let string = prompt("단어를 변경할 문장 입력");
let findWord = prompt("찾을 단어 입력");
let ChangeWord = prompt("변경할 단어 입력");
let afterString = replaceAll(string,findWord,ChangeWord);
alert("변경 전 : "+ string +"\n" + "변경 후 : " + afterString);
}
작성한 함수는 이렇게 되어 있다. 아주 잘 작동한다. String method를 이용해 간단하게 함수를 작성해 보았다.
'개인공부 > JavaScript' 카테고리의 다른 글
Document 객체 (0) | 2020.08.11 |
---|---|
Window 객체 (0) | 2020.08.11 |
스코프, 스코프 체인, outerEnvironmentReference (0) | 2020.08.03 |
함수 선언문과 함수 표현식 (0) | 2020.08.03 |
hoisting(호이스팅) (0) | 2020.08.03 |