자바스크립트는 변수에 함수를 저장하는 것이 가능하다
변수에 함수를 저장하면 함수로 변해서 사용할 수 있다.
자바스크립트는 자유도가 높음.
중복함수. 함수안에 함수
function test() {
output.innerHTML+='test() 내부 : <br>';
function nested() {
output.innerHTML+='nested() 내부 <br>';
}
nested();
}
test();
var x=123e5;
var y=123e-5;
12300000, 0.00123 이 출력된다
x=99999999999999999;
100000000000000000으로 나온다
y=0.1+0.2;
0.30000000000000004
x=(0.1*10 + 0.2*10)/10;
정수로 변환시켜 연산한 다음에 다시 소수로 만들기
" "으로 감싼 String 안에 또 " "를 쓰면 인식을 못함. "''", '""'로 교차해서 사용하거나 Escape Sequence를 사용하면 됩니다.
문자열 내에서 특수한 기능을 하는 문자(', ", )
\" = " \\ = \var str3=new String('안녕하세요');
var str4=new String('안녕하세요');
if(str3==str4){
output.innerHTML+='같은 객체<br>';
}else{
output.innerHTML+='다른 객체<br>';
}
new를 쓰면 객체가 되기때문에 다르다.
match(/문자열/g)로 정규표현식 g를 적용하면 일치하는 모든 문자열이 ,로 연결되어 나옵니다.패턴과 옵션
1) g(global) : 일치하는 모든패턴을 찾는다.
2) i(case-insensitive) : 대소문자 구분없이 패턴을 찾는다.
var 배열이름 = [원소1, 원소2, ...];
var 배열이름 = new Array(원소1, 원소2, ...);
인덱스 크기를 지정하지 않아도 되며 타입과 상관없이 원소를 저장합니다.
var person=['홍길동', 10000000, true];
자바에선 for-each문으로 배열의 값을 출력하는 for문이 있었는데요 for-in문은 배열의 인덱스를 출력하는 for문입니다.
var movies=['1','2','3'];
for(x in movies){
output.innerHTML+=movies[x]+'<br>';
}
java의 배열과 달리 자바스크립트의 배열은 자바의 arraylist처럼 원소의 추가와 삭제가 가능합니다.
var cities=['서울','대전','부산','광주'];
cities[10]='평양';
서울,대전,부산,광주,,,,,,,인천라고 출력되는데요
기존에 존재하는 배열의 인덱스에 새로운 원소를 넣으면 기존 원소들에 추가가 됩니다.
만약 인덱스에 기존에 원소가 존재한다면 원소가 수정돼요 이런 문제때문에 인덱스를 사용해서 배열에 접근하는건 조심해야합니다. 그래서 보통은 push()와 pop()을 사용합니다.
push(원소)
배열의 가장 마지막 위치에 새로운 원소를 추가함
pop()
배열의 가장 마지막에 위치한 원소를 삭제함
만약 특정 위치의 원소를 삭제하면 그 원소가 없어지고 뒤의 원소들로 인덱스를 채워지는게 아니라 해당 인덱스는 그대로 비어있어요
shift()
배열의 첫번째 원소를 삭제하고 원소들의 인덱스를 모두 한단계 앞으로 변경해줌
unshift()
배열의 첫번째 위치에 새로운 원소를 추가함.
배열의 요소들을 문자형식으로 사전식 정렬합니다.
function myFunction() {
points.sort(function(a,b) {
return a-b;
});
document.getElementById('demo').innerHTML=points;
}
return b-a는 내림차순으로 정렬할 수 있어요
실수로 document.getElementById를 안하고 바로 요소의 id.innerHTML만 썼는데 이래도 문자가 출력되네요 왜그런걸까요?
<p id="test"></p> <script type="text/javascript"> test.innerHTML+='테스트'; test.style.backgroundColor = 'cyan'; </script>모든게 정상적으로 적용된다.. 두둥?
찾아보니 제가
</body>바로 위에다 script를 만들어서 html코드가 순서대로 읽히고 요소 id가 먼저 생성된 다음에 script가 읽혀서 가능한거라하네용 그래도 웬만하면 생략하면 안된다는 점..!