변수의 한자는 變數이다. 즉 변할 수 있는 수라는 뜻이다. 하지만 한자의 의미와 다르게 프로그래밍에서의 변수에는 다양한 데이터 형이 담겨질 수 있다. 다음 예제는 변수의 값이 꼭 숫자가 와야 하는 것은 아니라는 것을 보여주기 위해서 만든 예제다.
String first = "coding";
System.out.println(first+" "+"everybody");
문자열을 변수에 담을 때는 위와 같이 변수의 이름 앞에 String을 붙여준다.
아래와 같이 여러개의 변수(a,b)를 동시에 선언 할 수도 있다.
String a, b;
a = "coding";
b = " everybody";
System.out.println(a+b);
다음은 자바스크립트에서 변수를 대입하는 장면이다.
a = 10;
b = 22.2;
alert(a+b);
변수 a와 b에는 각각 정수와 실수가 입력되고 있다. 자바스크립트는 자바와 다르게 변수의 값으로 어떠한 값도 들어올 수 있다. 까다롭게 정수와 실수를 구분하지 않아도 된다. 이런 이유로 자바스크립트와 같은 언어는 배우고 사용하기가 쉽다. 정수와 실수의 개념을 몰라도 되기 때문이다. 하지만 변수 a만 보고는 변수 안에 정수가 들어있는지 숫자가 들어있는지 파악 할 수 있는 방법이 없다. 이것은 아래와 같은 문제를 야기할 수 있다.
a = 'ten';
b = 22.2;
alert(a+b);
위의 결과는 ten22.2가 된다. 원래 변수 a를 만든 이는 이 변수에 정수가 들어올 것으로 예상했다. 개발자의 실수(mistake)이건 협업 과정에서 변수의 의미가 달라졌건 간에 변수를 사용하는 입장에서는 변수 a만 보고서는 이 안에 어떤 데이터 형의 값이 들어있는지 파악 할 수 있는 방법이 없다. 위와 같이 작은 규모의 로직에서는 이런 문제가 발생할 가능성이 거의 없지만 코드의 양이 많아지면 이러한 모호성이 큰 문제가 될 수 있다. 자바에서는 정수로 선언된 변수에 문자열을 대입하면 컴파일 에러가 발생하기 때문에 위의 문제를 반드시 해결해야 다음 단계로 진행 할 수 있다.
위의 예제를 통해서 알 수 있듯이 자바와 자바스크립트는 데이터를 바라보는 관점이 상당히 다르다. 자바는 자바스크립트에 비해서는 엄격한 것을 선호한다. 그래서 코딩을 위해서는 더 많은 지식이 필요 하지만 컴파일 단계에서 예상되는 문제점을 예측 할 수 있다. 자바스크립트는 관대하기 때문에 프로그래밍을 시작하기 위해서 더 적은 지식을 요구하고 신경 쓸 것이 별로 없다. 하지만, 관대한 특성으로 인해서 나중에 문제가 생길 수 있다. 어떤 언어가 더 좋은 언어라고 단정지을 수는 없다. 금융이나 과학적인 계산처럼 엄격함이 요구되는 분야에서는 엄격한 언어를 선호할 것이고, 웹페이지나 앱의 UI를 만드는 일이라면 JavaScript와 같이 관대한 언어를 사용하는 것이 더 적정할 것이다. 정답은 없다.