AMD(Asynchronous Module Definition) 방식으로 동적로딩되는 모듈의 경우, 그러니까 Javascript에서 define() 혹은 require()로 외부 모듈을 끌어다쓰는 경우, vscode에서 자동완성이나 기타 코드정보가 나타나지 않는 문제가 있는데, 이를 해결하려면 require를 define안에 선언하고 외부모듈에서는 module.export를 명시해줘야 한다. 하지만 이렇게하려면 구버전 라이브러리 같은 소스들은 각 코드를 쫒아 직접 하나하나 수정해줘야해서 난감해진다.이를 보완할 간단한 방안이 하나 있다. /** * @typedef {import("manager").PageManager} pagemanager * @typedef {import("eventmanager"..
Springboot든 뭐든, 웹서비스 중 javascript 구문을 입력받아 서버단에서 처리하는 경우가 있다. 그럴때 유용하게 사용할 수 있는 J2V8(V8Engine)라는 Java 바인딩 세트가 있다. 아래는 Java로 작성된 함수를 javascript구문으로 실행하는 예제이다. J2V8의 registerJavaMethod와 JavaCallback를 사용하였고 간단하게 사칙연산의 예를 들었다. 좀 더 자세한 정보는 여기를 참고하면 된다. import com.eclipsesource.v8.*; public class ArithmeticCalculator { public static void main(String[] args) { // V8.createV8Runtime()을 사용하여 V8 런타임을 생성 t..
Nullish란. 널 병합 연산자(Nullish coalescing operator, ??)는 왼쪽 피연산자가 null 또는 undefined일 때 오른쪽 피연산자를 반환하고, 그렇지 않으면 왼쪽 피연산자를 반환하는 논리 연산자이다. ??의 동작을 동일하게 문법적으로 표현해보면 다음과 같다. /* 아래 두 구문은 동일한 의미를 지닌다. */ x = a ?? b; x = (a !== null && a !== undefined) ? a : b; 이는 ||와 매우 유사한 연산결과를 나타낸다. ||의 경우 boolean 논리 연산자 때문에, 왼쪽 피연산자는 boolean으로 강제로 변환되었고 falsy 한 값(0, '', NaN, null, undefined)은 반환되지 않는다. 만약 0, '' or NaN을 ..