JSHint出现Javascript错误

Javascript error with JSHint

本文关键字:错误 Javascript 出现 JSHint      更新时间:2024-03-20

我带来了这本书:http://www.amazon.com/Full-Stack-JavaScript-Development-MEAN/dp/0992461251/ref=sr_1_3?ie=UTF8&qid=1424518897&sr=8-3&keywords=平均

我在研究这些例子时,发现了一段代码:

var http    =   require(‘http’);
var fs  =   require(‘fs’);
http.createServer(function  (req,   res)    {
    if  (req.url    === ‘/favicon.ico’) {
            return  res.end();
    }
    console.log(‘Incoming   request to  ‘   +   req.url);
    var i   =   2;
    res.writeHead(200,  {‘Content-Type’:    ‘text/plain’});
    setTimeout(function()   {
            fs.readFile(__filename, {
                    encoding:   ‘utf8’
            },  function    (error, contents)   {
                    if  (error) {
                            console.error(error);
                            return  res.end();
                    }
                    console.log(‘sending    response    for ‘   +   req.url);
                    res.end(contents);
            });
    },  5000);
    while(i—)   {
            console.log(‘Loop   value:  ‘       +   i   +   ‘'r’);
    }
}).listen(1337, ‘127.0.0.1’);
console.log(‘Server running at  http://127.0.0.1:1337/’);

我发现3个问题:

  • 程序员使用2个空格,这在刚开始的程序员中很常见(现在有8个空格,因为我改了,应该是4,我知道)
  • 代码未编译
  • 错误的编程实践,比如"__filename",他从哪里得到这个变量

因此,作为一名新的javascript程序员,我可能会过度努力,得出错误的结论。是这样吗?

以下是JSHint(npm安装)给出的错误:

27,12:意外的"--"。

28,9:应为")"以匹配第27行的"(",而看到的却是"console"。

28,16:应为标识符,但看到的却是"."。

28,16:应为赋值或函数调用,但实际看到的却是表达式。

28,17:缺少分号。

30,1:应为")",而看到的却是"}"。

30,2:缺少分号。

30,2:应为标识符,而看到的却是")"。

30,3:应为运算符,但实际看到的却是"."。

30,3:应为赋值或函数调用,但实际看到的却是表达式。

30,4:缺少分号。

那么,这家伙是在他的书中写了糟糕的代码,还是我作为一个javascript初学者过度扩张了自己?

这是因为您所有的'都已被翻译成排版。不过,快速搜索和替换会解决问题。

此外,i--已经被结扎的i—取代,也修复了这一点。尽量不要复制和粘贴书本上的代码。通常源代码是附加的或可从某个地方下载的,但对于新程序员来说,手写是熟悉一种语言的好方法。

对于前导双下划线,没有规则禁止它,它通常是将某些内容标记为私有(甚至是Python等语言中的约定)或保留的一种方式。

这是工作代码。你只是把格式搞砸了。

--(可以转换为连字),引号是而不是'__filename是全局节点变量(请参阅文档)。

修复格式错误并运行代码,它正在工作:

> node app.js 
> Server running at  http://127.0.0.1:1337/