JavaScript作为第一种编程语言?

use*_*885 2 javascript programming-languages

我想从头开始学习如何编程.我遇到了一个基于JavaScript的在线初学者课程,看起来做得非常好.然而,我的一个朋友劝我不要参加这门课程,认为我应该从Visual Basic或C#开始.他的理由是JavaScript显然不会强迫你遵守高标准的编程最佳实践(它可以让你侥幸逃脱),因此它可能会导致初学者养成糟糕的编程习惯.你同意吗?这真的是一个大问题吗?你不能从JavaScript开始,然后添加一个需要更严格的低级语言吗?提前感谢您的建议!

Ada*_*kis 9

JavaScript是我最喜欢的编程语言,但它可能是开始学习的最糟糕的编程语言之一.每个角落都有隐藏的细微差别.例如,可以用四种不同的方式调用函数(最后两种方法组合在一起),每种方式this都会影响等于的内容

 foo();                     //this = global object or undefined in strict mode
 obj.foo();                 //this = obj
 new Foo();                 //this = object inheriting from Foo's prototype
 foo.call(lala, 12, 3);
 foo.apply(lala, [12, 3]);  //this = lala 
Run Code Online (Sandbox Code Playgroud)

然后有一个事实,虽然它不支持类,但它真的希望开发人员认为它确实:

var p = new Person(); //Person's a class, right?
Run Code Online (Sandbox Code Playgroud)

当需要创建对象时,您可以选择以下多种选项:

function Person(name){
    this.name = name;
}
var p = new Person("Adam");
Run Code Online (Sandbox Code Playgroud)
var p = { name: "Adam" };
Run Code Online (Sandbox Code Playgroud)
function createPerson(name){
    var that = {};
    that.name = name;
    return that;
}
var p = createPerson("Adam");
Run Code Online (Sandbox Code Playgroud)

当然,继承将完全不同,具体取决于您选择的上述哪一项.

将所有这些与功能范围相结合,没有编译器指出明显的错误,分号插入为您创建错误,我强烈建议您从更传统的语言开始,如C#或Java.

  • 上述所有内容都不是开始编程的好语言吗? (3认同)
  • @RobG - 从我看来,我会看到新的开发人员迷失在上述所有方面.但也许我只是偏向开始使用C++. (2认同)