MST

星途 面试题库

面试题:JavaScript逻辑表达式短路求值的实际场景优化

假设你正在开发一个前端应用,需要获取用户的地理位置信息。如果浏览器支持 `navigator.geolocation`,则调用 `getCurrentPosition` 方法获取位置;若不支持,就显示一个提示信息给用户。请使用逻辑表达式短路求值来实现这个功能,并且说明为什么使用这种方式比传统的 `if - else` 语句更有优势(从性能和代码简洁性方面阐述)。
22.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
<!DOCTYPE html>
<html lang="zh - CN">
<head>
    <meta charset="UTF - 8">
    <meta name="viewport" content="width=device-width, initial - scale=1.0">
    <title>获取地理位置</title>
</head>
<body>
    <div id="result"></div>
    <script>
        const resultDiv = document.getElementById('result');
        navigator.geolocation && navigator.geolocation.getCurrentPosition(
            position => {
                resultDiv.textContent = `纬度: ${position.coords.latitude}, 经度: ${position.coords.longitude}`;
            },
            error => {
                resultDiv.textContent = `获取位置失败: ${error.message}`;
            }
        ) || (resultDiv.textContent = '您的浏览器不支持获取地理位置信息');
    </script>
</body>
</html>

优势阐述

  • 性能方面:逻辑表达式短路求值在条件满足时会立即停止后续表达式的计算。例如在 navigator.geolocation && navigator.geolocation.getCurrentPosition(...) 中,如果 navigator.geolocationfalse,那么 getCurrentPosition 方法就不会被调用,减少了不必要的函数调用开销,相比 if - else 语句,在某些情况下可以提升性能。
  • 代码简洁性方面:逻辑表达式短路求值用简洁的一行代码就完成了条件判断和相应操作,而传统 if - else 语句需要更多的代码块和缩进,使代码看起来更冗长。例如上述代码,使用短路求值避免了显式的 if - else 代码块,使代码更加紧凑和易读。