Does Your JavaScript Code Sucks?

does your javascript code sucks?

javascript 是一种让网站正常运行的语言,由 brendan eich 于 1995 年在短短 10 天内创建。尽管许多人批评其奇怪的功能,但它很快就流行起来。随着时间的推移,javascript 已经发展成为一种强大且灵活的语言,对于现代 web 开发至关重要。然而,许多程序员仍然编写缓慢、有风险且设计不佳的 javascript 代码。

让我们看看程序员在编写 javascript 代码时可能犯的一些常见错误。并向您展示这些错误的修复方法,使您的代码更安全、更易于理解。

1. 全局变量和被污染的命名空间

javascript 非常灵活,有时会导致问题。程序员可能会意外创建可在代码中任何位置使用的变量,这可能会导致意外错误,尤其是在大型项目中。

var user = "admin"; // declared in the global scopefunction setuser() {    user = "guest"; // accidentally overwrites the global variable}setuser();console.log(user); // "guest" - unintended behavior

使用 iife(立即调用函数表达式)将变量隐藏在代码的特定部分中,防止它们干扰代码的其他部分。这使得代码更安全、更易于管理。

(() => {    let user = "admin"; // scoped to this block    function setuser() {        user = "guest";    }    setuser();    console.log(user); // "guest" - intended behavior})();

2. 不安全的数据处理

编写不当的 javascript 代码有时会泄露秘密信息或无法正确清理用户输入,从而导致跨站脚本 (xss) 攻击等安全问题。

const userinput = "alert('hacked!')";document.getelementbyid("output").innerhtml = userinput; // wrong!

使用 textcontent 或正确清理输入可防止执行恶意脚本。

const userinput = "alert('hacked!')";const sanitizedinput = userinput.replace(/</g, "/g, ">");document.getelementbyid("output").textcontent = sanitizedinput;

3. 过度依赖eval()

eval() 函数很危险,因为它允许从字符串运行代码。黑客可以利用它潜入恶意代码。

const usercode = "alert('hacked!')";eval(usercode); // wrong!

完全避免使用 eval(),而是依赖更安全的替代方案,例如严格控制的 function。

const usercode = "alert('hacked!')";// avoid eval(); implement safer alternativestry {    const safefunction = new function(usercode); // limited scope execution    safefunction();} catch (e) {    console.error("execution failed:", e);}

4. 错误处理能力较弱

忽略或错误处理错误可能会导致您的应用程序崩溃甚至泄露私人信息。

const fetchdata = async () => {    const response = await fetch("https://api.example.com/data");    return response.json(); // assuming api always returns valid json};

始终验证响应并实施结构化错误处理。

const fetchdata = async () => {    try {        const response = await fetch("https://api.example.com/data");        if (!response.ok) throw new error("network response was not ok");        return await response.json();    } catch (error) {        console.error("fetch failed:", error.message);        return null; // graceful degradation    }};

5. 硬编码的秘密

现在这是很多初学者开发人员犯错误的地方。将 api 密钥或密码等秘密信息直接存储在 javascript 文件中是一个坏主意,因为任何查看代码的人都可以轻松访问它。

const api_key = "12345-secret";fetch(`https://api.example.com/data?key=${api_key}`);

利用环境变量(.env 或 .env.local)或安全存储解决方案来保护代码库的机密。

// Use environment variablesconst API_KEY = process.env.API_KEY;fetch(`https://api.example.com/data?key=${API_KEY}`);

编写好的 javascript 代码不仅仅是让它工作。确保它安全、快速且易于理解和更改也很重要。通过修复常见错误并遵循良好实践,您可以将混乱的 javascript 变成干净、专业的代码。

下次你编写 javascript 时,问问自己:“我的代码很糟糕吗?”如果答案是“是”,那么是时候改进它了朋友!

立即学习“Java免费学习笔记(深入)”;

以上就是Does Your JavaScript Code Sucks?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1498139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 20:12:02
下一篇 2025年12月19日 20:12:13

相关推荐

发表回复

登录后才能评论
关注微信