JavaScriptã®ãšãã§ã¯ãã¿ã€ããç¹ã«å¯äœçšè¿œè·¡ã«ã€ããŠæãäžããããäºæž¬å¯èœã§ä¿å®ãããããå ç¢ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸããããå®è·µçãªãã¯ããã¯ãšãã¹ããã©ã¯ãã£ã¹ãåŠã³ãŸãã
JavaScriptã®ãšãã§ã¯ãã¿ã€ãïŒå ç¢ãªã¢ããªã±ãŒã·ã§ã³ã®ããã®å¯äœçšè¿œè·¡ã®è§£æ
JavaScriptéçºã®é åã«ãããŠãäºæž¬å¯èœã§ä¿å®ãããããå ç¢ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«ã¯ãå¯äœçšãçè§£ã管çããããšãäžå¯æ¬ ã§ããå¯äœçšãšã¯ã颿°ã®ã¹ã³ãŒãå€ã®ç¶æ ã倿Žããããå€éšã®äžçãšçžäºäœçšãããããã¢ã¯ã·ã§ã³ã®ããšã§ããå€ãã®ã·ããªãªã§é¿ããããªããã®ã®ãå¶åŸ¡ãããŠããªãå¯äœçšã¯äºæãã¬æåãåŒãèµ·ããããããã°ãæªå€¢ã«å€ããã³ãŒãã®åå©çšã劚ããããšããããŸãããã®èšäºã§ã¯ãJavaScriptã®ãšãã§ã¯ãã¿ã€ããç¹ã«å¯äœçšè¿œè·¡ã«çŠç¹ãåœãŠããããã®æœåšçãªèœãšã穎ãå æããããã®ç¥èãšãã¯ããã¯ãæäŸããŸãã
å¯äœçšãšã¯ïŒ
å¯äœçšã¯ã颿°ãå€ãè¿ãããšã«å ããŠããã®ããŒã«ã«ç°å¢å€ã®äœããã®ç¶æ ã倿Žããããå€éšã®äžçãšçžäºäœçšãããããå Žåã«çºçããŸããJavaScriptã«ãããå¯äœçšã®äžè¬çãªäŸã«ã¯ã以äžãå«ãŸããŸãã
- ã°ããŒãã«å€æ°ã®å€æŽã
- åŒæ°ãšããŠæž¡ããããªããžã§ã¯ãã®ããããã£ã®å€æŽã
- HTTPãªã¯ãšã¹ãã®å®è¡ã
- ã³ã³ãœãŒã«ãžã®æžã蟌ã¿ïŒ
console.logïŒã - DOMã®æŽæ°ã
Math.random()ã®äœ¿çšïŒãã®åºæã®äºæž¬äžå¯èœæ§ã®ããïŒã
ãããã®äŸãèããŠã¿ãŸãããã
// Example 1: Modifying a global variable
let counter = 0;
function incrementCounter() {
counter++; // Side effect: Modifies global variable 'counter'
return counter;
}
console.log(incrementCounter()); // Output: 1
console.log(counter); // Output: 1
// Example 2: Modifying an object's property
function updateObject(obj) {
obj.name = "Updated Name"; // Side effect: Modifies the object passed as an argument
}
const myObject = { name: "Original Name" };
updateObject(myObject);
console.log(myObject.name); // Output: Updated Name
// Example 3: Making an HTTP request
async function fetchData() {
const response = await fetch("https://api.example.com/data"); // Side effect: Network request
const data = await response.json();
return data;
}
ãªãå¯äœçšã¯åé¡ã«ãªãã®ãïŒ
å¯äœçšã¯å€ãã®ã¢ããªã±ãŒã·ã§ã³ã§å¿ èŠãªèŠçŽ ã§ãããå¶åŸ¡ãããŠããªãå¯äœçšã¯ããã€ãã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã
- äºæž¬å¯èœæ§ã®äœäž: å¯äœçšãæã€é¢æ°ã¯ããã®æ¯ãèããå€éšã®ç¶æ ã«äŸåãããããçè§£ããã®ãé£ãããªããŸãã
- è€éæ§ã®å¢å : å¯äœçšã¯ããŒã¿ã®æµãã远跡ããã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãéšåãã©ã®ããã«çžäºäœçšããããçè§£ããã®ãå°é£ã«ããŸãã
- ãã¹ãã®å°é£ã: å¯äœçšãæã€é¢æ°ããã¹ãããã«ã¯ãå€éšäŸåé¢ä¿ãèšå®ããã³è§£é€ããå¿ èŠãããããã¹ããããè€éã§å£ãããããã®ã«ããŸãã
- äžŠè¡æ§ã®åé¡: 䞊è¡ç°å¢ã§ã¯ãå¯äœçšãæ éã«åŠçãããªãå Žåãç«¶åç¶æ ãããŒã¿ç Žæã«ã€ãªããå¯èœæ§ããããŸãã
- ãããã°ã®èª²é¡: å¯äœçšãã³ãŒãå šäœã«æ£ãã°ã£ãŠããå Žåããã°ã®åå ãç¹å®ããã®ãå°é£ã«ãªãããšããããŸãã
çŽç²é¢æ°ïŒçæ³ïŒãã ãåžžã«å®çšçã§ã¯ãªãïŒ
çŽç²é¢æ°ã®æŠå¿µã¯ãå¯Ÿç §çãªçæ³ãæäŸããŸããçŽç²é¢æ°ã¯2ã€ã®äž»èŠãªååã«åŸããŸãã
- åžžã«åãå ¥åã«å¯ŸããŠåãåºåãè¿ããŸãã
- å¯äœçšããããŸããã
çŽç²é¢æ°ã¯äºæž¬å¯èœã§ãã¹ããããããçè§£ãããããããéåžžã«æãŸãããã®ã§ããããããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§å¯äœçšãå®å šã«æé€ããããšã¯ã»ãšãã©çŸå®çã§ã¯ãããŸãããç®æšã¯å¿ ãããå¯äœçšãå®å šã«æé€ããããšã§ã¯ãªãããããã广çã«å¶åŸ¡ã管çããããšã§ãã
// Example: A pure function
function add(a, b) {
return a + b; // No side effects, returns the same output for the same input
}
console.log(add(2, 3)); // Output: 5
console.log(add(2, 3)); // Output: 5 (always the same for the same inputs)
JavaScriptã®ãšãã§ã¯ãã¿ã€ãïŒå¯äœçšã®å¶åŸ¡
ãšãã§ã¯ãã¿ã€ãã¯ãã³ãŒãå ã®å¯äœçšãæç€ºçã«è¡šçŸã管çããæ¹æ³ãæäŸããŸãããããã¯å¯äœçšãåé¢ãå¶åŸ¡ããã®ã«åœ¹ç«ã¡ãã³ãŒããããäºæž¬å¯èœã§ä¿å®ããããããŸããJavaScriptã«ã¯Haskellã®ãããªèšèªã«çµã¿èŸŒãŸãããšãã§ã¯ãã¿ã€ãã¯ãããŸããããåæ§ã®å©ç¹ãåŸãããã«ãã¿ãŒã³ãã©ã€ãã©ãªãå®è£ ããããšãã§ããŸãã
1. 颿°åã¢ãããŒãïŒäžå€æ§ãšçŽç²é¢æ°ã®æ¡çš
äžå€æ§ãçŽç²é¢æ°ã®äœ¿çšãªã©ã®é¢æ°åããã°ã©ãã³ã°ã®ååã¯ãå¯äœçšãæå°éã«æãã管çããããã®åŒ·åãªããŒã«ã§ããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§å šãŠã®å¯äœçšãæé€ããããšã¯ã§ããŸããããã§ããã ãå€ãã®ã³ãŒããçŽç²é¢æ°ã䜿çšããŠæžãããåªããããšã§ã significantãªå©ç¹ãåŸãããŸãã
äžå€æ§ïŒäžå€æ§ãšã¯ãããŒã¿æ§é ãäžåºŠäœæããããšå€æŽã§ããªãããšãæå³ããŸããæ¢åã®ãªããžã§ã¯ããé åã倿Žãã代ããã«ãæ°ãããã®ãäœæããŸããããã«ãããäºæãã¬å€æŽã鲿¢ãããã³ãŒããçè§£ãããããªããŸãã
// Example: Immutability using the spread operator
const originalArray = [1, 2, 3];
// Instead of mutating the original array...
// originalArray.push(4); // Avoid this!
// Create a new array with the added element
const newArray = [...originalArray, 4];
console.log(originalArray); // Output: [1, 2, 3]
console.log(newArray); // Output: [1, 2, 3, 4]
ImmerãImmutable.jsã®ãããªã©ã€ãã©ãªã¯ãäžå€æ§ãããç°¡åã«åŒ·å¶ããã®ã«åœ¹ç«ã¡ãŸãã
é«é颿°ã®äœ¿çšïŒJavaScriptã®é«é颿°ïŒä»ã®é¢æ°ãåŒæ°ãšããŠåãåã颿°ããŸãã¯é¢æ°ãè¿ã颿°ïŒã§ããmapãfilterãreduceãªã©ã¯ãäžå€ãªæ¹æ³ã§ããŒã¿ãæ±ãããã®åªããããŒã«ã§ãããããã䜿çšãããšãå
ã®ããŒã¿æ§é ã倿Žããã«ããŒã¿ã倿ã§ããŸãã
// Example: Using map to transform an array immutably
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(number => number * 2);
console.log(numbers); // Output: [1, 2, 3, 4, 5]
console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10]
2. å¯äœçšã®åé¢ïŒäŸåæ§æ³šå ¥ãã¿ãŒã³
äŸåæ§æ³šå ¥ïŒDIïŒã¯ãã³ã³ããŒãã³ããäŸåé¢ä¿ãèªèº«ã§äœæããã®ã§ã¯ãªããå€éšããã³ã³ããŒãã³ãã«äŸåé¢ä¿ãæäŸããããšã§ãã³ã³ããŒãã³ãã®åé¢ãå©ãããã¶ã€ã³ãã¿ãŒã³ã§ããããã«ãããå¯äœçšãåŒãèµ·ããäŸåé¢ä¿ãå«ããäŸåé¢ä¿ã®ãã¹ãã眮ãæãã容æã«ãªããŸãã
// Example: Dependency Injection
class UserService {
constructor(apiClient) {
this.apiClient = apiClient; // Inject the API client
}
async getUser(id) {
return await this.apiClient.fetch(`/users/${id}`); // Use the injected API client
}
}
// In a testing environment, you can inject a mock API client
const mockApiClient = {
fetch: async (url) => ({ id: 1, name: "Test User" }), // Mock implementation
};
const userService = new UserService(mockApiClient);
// In a production environment, you would inject a real API client
const realApiClient = {
fetch: async (url) => {
const response = await fetch(url);
return response.json();
},
};
const productionUserService = new UserService(realApiClient);
3. ç¶æ 管çïŒReduxãŸãã¯Vuexã«ããéäžåç¶æ 管ç
ReduxïŒReactçšïŒãVuexïŒVue.jsçšïŒã®ãããªéäžåç¶æ 管çã©ã€ãã©ãªã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãäºæž¬å¯èœãªæ¹æ³ã§ç®¡çããææ®µãæäŸããŸãããããã®ã©ã€ãã©ãªã¯éåžžãåæ¹åããŒã¿ãããŒã䜿çšããäžå€æ§ã匷å¶ããããšã§ãç¶æ ã®å€åã远跡ããããããå¯äœçšã«é¢é£ããåé¡ããããã°ããããããŸãã
äŸãã°Reduxã¯ãã¬ãã¥ãŒãµãŒïŒåã®ç¶æ ãšã¢ã¯ã·ã§ã³ãå ¥åãšããŠåãåããæ°ããç¶æ ãè¿ãçŽç²é¢æ°ïŒã䜿çšããŸããã¢ã¯ã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³ã§çºçããã€ãã³ããèšè¿°ãããã¬ãŒã³ãªJavaScriptãªããžã§ã¯ãã§ããã¬ãã¥ãŒãµãŒã䜿çšããŠç¶æ ãæŽæ°ããããšã§ãç¶æ ã®å€åãäºæž¬å¯èœã§è¿œè·¡å¯èœã§ããããšãä¿èšŒããŸãã
Reactã®Context APIã¯åºæ¬çãªç¶æ 管çãœãªã¥ãŒã·ã§ã³ãæäŸããŸãããå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§ã¯æ±ãã«ãããªãããšããããŸããReduxãVuexã¯ãè€éãªã¢ããªã±ãŒã·ã§ã³ç¶æ ã管çããããã®ããæ§é åãããã¹ã±ãŒã©ãã«ãªã¢ãããŒããæäŸããŸãã
4. éåææäœã®ããã®PromisesãšAsync/Awaitã®äœ¿çš
éåææäœïŒäŸïŒAPIããã®ããŒã¿ãã§ããïŒãæ±ãéãPromisesãšasync/awaitã¯å¯äœçšãåŠçããããã®æ§é åãããæ¹æ³ãæäŸããŸãããããã«ãããéåæã³ãŒããããèªã¿ãããä¿å®ããããæ¹æ³ã§ç®¡çã§ãããšã©ãŒã®åŠçãããŒã¿ã®æµãã®è¿œè·¡ã容æã«ãªããŸãã
// Example: Using async/await with try/catch for error handling
async function fetchData() {
try {
const response = await fetch("https://api.example.com/data");
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
console.error("Error fetching data:", error); // Handle the error
throw error; // Re-throw the error to be handled further up the chain
}
}
fetchData()
.then(data => console.log("Data received:", data))
.catch(error => console.error("An error occurred:", error));
async/awaitãããã¯å
ã®é©åãªãšã©ãŒãã³ããªã³ã°ã¯ããããã¯ãŒã¯ãšã©ãŒãAPIã®é害ãªã©ã®æœåšçãªå¯äœçšã管çããããã«äžå¯æ¬ ã§ãã
5. ãžã§ãã¬ãŒã¿ãšãªãã¶ãŒããã«
ãžã§ãã¬ãŒã¿ãšãªãã¶ãŒããã«ã¯ãéåææäœãšå¯äœçšã管çããããã®ããé«åºŠãªæ¹æ³ãæäŸããŸãããããã¯ããŒã¿ã®æµãã«å¯Ÿãããã倧ããªå¶åŸ¡ãæäŸããè€éãªã·ããªãªããã广çã«åŠçã§ããããã«ããŸãã
ãžã§ãã¬ãŒã¿ïŒãžã§ãã¬ãŒã¿ã¯äžæåæ¢ããã³åéã§ãã颿°ã§ãããéåæã³ãŒããããåæçãªã¹ã¿ã€ã«ã§èšè¿°ã§ããŸãããããã¯è€éãªã¯ãŒã¯ãããŒã管çããå¶åŸ¡ãããæ¹æ³ã§å¯äœçšãåŠçããããã«äœ¿çšã§ããŸãã
ãªãã¶ãŒããã«ïŒãªãã¶ãŒããã«ïŒãã°ãã°RxJSã®ãããªã©ã€ãã©ãªãšå ±ã«äœ¿çšãããïŒã¯ãæéã®çµéã«äŒŽãããŒã¿ã¹ããªãŒã ãåŠçããããã®åŒ·åãªæ¹æ³ãæäŸããŸãããããã䜿çšãããšãã€ãã³ãã«åå¿ãããªã¢ã¯ãã£ããªæ¹æ³ã§å¯äœçšãå®è¡ã§ããŸãããªãã¶ãŒããã«ã¯ããŠãŒã¶ãŒå ¥åããªã¢ã«ã¿ã€ã ããŒã¿ã¹ããªãŒã ãããã³ãã®ä»ã®éåæã€ãã³ããåŠçããã®ã«ç¹ã«åœ¹ç«ã¡ãŸãã
6. å¯äœçšã®è¿œè·¡ïŒãã®ã³ã°ãç£æ»ãç£èŠ
å¯äœçšã®è¿œè·¡ã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã§çºçããå¯äœçšã®èšé²ãšç£èŠãå«ãŸããŸããããã¯ããã®ã³ã°ãç£æ»ãããã³ç£èŠããŒã«ãéããŠå®çŸã§ããŸããå¯äœçšã远跡ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®åäœã«é¢ããæŽå¯ãåŸãŠãæœåšçãªåé¡ãç¹å®ã§ããŸãã
ãã®ã³ã°ïŒãã®ã³ã°ã«ã¯ãå¯äœçšã«é¢ããæ å ±ããã¡ã€ã«ãŸãã¯ããŒã¿ããŒã¹ã«èšé²ããããšãå«ãŸããŸãããã®æ å ±ã«ã¯ãå¯äœçšãçºçããæå»ã圱é¿ãåããããŒã¿ãããã³ã¢ã¯ã·ã§ã³ãéå§ãããŠãŒã¶ãŒãå«ãŸããå ŽåããããŸãã
ç£æ»ïŒç£æ»ã«ã¯ãã¢ããªã±ãŒã·ã§ã³å ã®éèŠãªããŒã¿ã®å€æŽã远跡ããããšãå«ãŸããŸããããã¯ãããŒã¿ã®æŽåæ§ã確ä¿ããäžæ£ãªå€æŽãç¹å®ããããã«äœ¿çšã§ããŸãã
ç£èŠïŒç£èŠã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã远跡ããæœåšçãªããã«ããã¯ããšã©ãŒãç¹å®ããããšãå«ãŸããŸããããã«ããããŠãŒã¶ãŒã«åœ±é¿ãäžããåã«åé¡ãç©æ¥µçã«è§£æ±ºã§ããŸãã
// Example: Logging a side effect
function updateUser(user, newName) {
console.log(`User ${user.id} updated name from ${user.name} to ${newName}`); // Logging the side effect
user.name = newName; // Side effect: Modifying the user object
}
const myUser = { id: 123, name: "Alice" };
updateUser(myUser, "Alicia"); // Output: User 123 updated name from Alice to Alicia
å®è·µçãªäŸãšãŠãŒã¹ã±ãŒã¹
ãããã®ãã¯ããã¯ãå®éã®ã·ããªãªã§ã©ã®ããã«é©çšã§ããããããã€ãã®å®è·µçãªäŸãèŠãŠã¿ãŸãããã
- ãŠãŒã¶ãŒèªèšŒã®ç®¡çïŒãŠãŒã¶ãŒããã°ã€ã³ãããšãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ããŠãŒã¶ãŒã®èªèšŒã¹ããŒã¿ã¹ãåæ ããããã«æŽæ°ããå¿ èŠããããŸããããã¯ãReduxãVuexã®ãããªéäžåç¶æ 管çã·ã¹ãã ã䜿çšããŠè¡ãããšãã§ããŸãããã°ã€ã³ã¢ã¯ã·ã§ã³ã¯ãç¶æ å ã®ãŠãŒã¶ãŒã®èªèšŒã¹ããŒã¿ã¹ãæŽæ°ããã¬ãã¥ãŒãµãŒãããªã¬ãŒããŸãã
- ãã©ãŒã éä¿¡ã®åŠçïŒãŠãŒã¶ãŒããã©ãŒã ãéä¿¡ãããšãããŒã¿ããµãŒããŒã«éä¿¡ããããã«HTTPãªã¯ãšã¹ããè¡ãå¿
èŠããããŸããããã¯ãPromisesãš
async/awaitã䜿çšããŠè¡ãããšãã§ããŸãããã©ãŒã éä¿¡ãã³ãã©ãŒã¯ãfetchã䜿çšããŠããŒã¿ãéä¿¡ããå¿çãåŠçããŸãããã®ã·ããªãªã§ã¯ããããã¯ãŒã¯ãšã©ãŒããµãŒããŒåŽã®æ€èšŒãšã©ãŒãé©åã«åŠçããããã«ãšã©ãŒãã³ããªã³ã°ãéèŠã§ãã - å€éšã€ãã³ãã«åºã¥ãUIã®æŽæ°ïŒãªã¢ã«ã¿ã€ã ãã£ããã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŸããããæ°ããã¡ãã»ãŒãžãå°çãããšãUIãæŽæ°ããå¿ èŠããããŸãããªãã¶ãŒããã«ïŒRxJSãä»ããŠïŒã¯ããã®ã·ããªãªã«éåžžã«é©ããŠãããåä¿¡ã¡ãã»ãŒãžã«åå¿ãããªã¢ã¯ãã£ããªæ¹æ³ã§UIãæŽæ°ã§ããŸãã
- åæã®ããã®ãŠãŒã¶ãŒã¢ã¯ãã£ããã£ã®è¿œè·¡ïŒåæã®ããã«ãŠãŒã¶ãŒã¢ã¯ãã£ããã£ããŒã¿ãåéããã«ã¯ãå€ãã®å ŽåãåæãµãŒãã¹ãžã®APIåŒã³åºããå«ãŸããŸããããã¯å¯äœçšã§ããããã管çããã«ã¯ããã¥ãŒã·ã¹ãã ã䜿çšã§ããŸãããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã¯ããã¥ãŒã«ã¿ã¹ã¯ã远å ããã€ãã³ããããªã¬ãŒããŸããå¥ã®ããã»ã¹ããã¥ãŒããã¿ã¹ã¯ãæ¶è²»ããããŒã¿ãåæãµãŒãã¹ã«éä¿¡ããŸããããã«ããããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãšåæãã®ã³ã°ãåé¢ãããããã©ãŒãã³ã¹ãšä¿¡é Œæ§ãåäžããŸãã
å¯äœçšã管çããããã®ãã¹ããã©ã¯ãã£ã¹
JavaScriptã³ãŒãã§å¯äœçšã管çããããã®ããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã以äžã«ç€ºããŸãã
- å¯äœçšã®æå°åïŒã§ããã ãå€ãã®ã³ãŒããçŽç²é¢æ°ã䜿çšããŠæžãããšãç®æããŸãã
- å¯äœçšã®åé¢ïŒäŸåæ§æ³šå ¥ã®ãããªãã¯ããã¯ã䜿çšããŠãå¯äœçšãã³ã¢ããžãã¯ããåé¢ããŸãã
- ç¶æ 管çã®éäžåïŒReduxãVuexã®ãããªéäžåç¶æ 管çã·ã¹ãã ã䜿çšããŠãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãäºæž¬å¯èœãªæ¹æ³ã§ç®¡çããŸãã
- éåææäœã®æ
éãªåŠçïŒPromisesãš
async/awaitã䜿çšããŠéåææäœã管çãããšã©ãŒãé©åã«åŠçããŸãã - å¯äœçšã®è¿œè·¡ïŒãã®ã³ã°ãç£æ»ãç£èŠãå®è£ ããŠå¯äœçšã远跡ããæœåšçãªåé¡ãç¹å®ããŸãã
- 培åºçãªãã¹ãïŒå¯äœçšãååšããå Žåã§ãã³ãŒããæåŸ éãã«åäœããããšãä¿èšŒããããã«ãå æ¬çãªãã¹ããäœæããŸãããã¹ã察象ã®ãŠããããåé¢ããããã«å€éšäŸåé¢ä¿ãã¢ãã¯ããŸãã
- ã³ãŒãã®ææžåïŒé¢æ°ãã³ã³ããŒãã³ãã®å¯äœçšãæç¢ºã«ææžåããŸããããã«ãããä»ã®éçºè ãã³ãŒãã®åäœãçè§£ããæå³ããªãæ°ããå¯äœçšãå°å ¥ããããšãé²ããŸãã
- ãªã³ã¿ãŒã®äœ¿çšïŒã³ãŒãã£ã³ã°æšæºã匷å¶ããæœåšçãªå¯äœçšãç¹å®ããããã«ãªã³ã¿ãŒïŒESLintãªã©ïŒãèšå®ããŸãããªã³ã¿ãŒã¯ãå¯äœçšç®¡çã«é¢é£ããäžè¬çãªã¢ã³ããã¿ãŒã³ãæ€åºããããã®ã«ãŒã«ã§ã«ã¹ã¿ãã€ãºã§ããŸãã
- 颿°åããã°ã©ãã³ã°ååã®æ¡çšïŒã«ãªãŒåãã³ã³ããžã·ã§ã³ãäžå€æ§ãªã©ã®é¢æ°åããã°ã©ãã³ã°ã®æŠå¿µãåŠã³ãé©çšããããšã§ãJavaScriptã§ã®å¯äœçšç®¡çèœåãå€§å¹ ã«åäžãããããšãã§ããŸãã
çµè«
å¯äœçšã®ç®¡çã¯ãããããJavaScriptéçºè ã«ãšã£ãŠéèŠãªã¹ãã«ã§ãããã®èšäºã§èª¬æãããŠãããšãã§ã¯ãã¿ã€ãã®ååãçè§£ãããã¯ããã¯ãé©çšããããšã§ãããäºæž¬å¯èœã§ä¿å®ãããããå ç¢ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸããå¯äœçšãå®å šã«æé€ããããšãåžžã«å¯èœã§ãããšã¯éããŸããããããããæèçã«å¶åŸ¡ããã³ç®¡çããããšã¯ãé«å質ã®JavaScriptã³ãŒããäœæããããã«æãéèŠã§ãããããžã§ã¯ãã®åŒ·åºãªåºç€ãæ§ç¯ããããã«ãäžå€æ§ãåªå ããå¯äœçšãåé¢ããç¶æ ãéäžç®¡çããã¢ããªã±ãŒã·ã§ã³ã®åäœã远跡ããããšãå¿ããªãã§ãã ããã