相关疑难解决方法(0)

JavaScript中使用"严格"做什么,背后的原因是什么?

最近,我通过Crockford的JSLint运行了一些我的JavaScript代码,它给出了以下错误:

第1行问题1:缺少"使用严格"声明.

做一些搜索,我意识到有些人会加入"use strict";他们的JavaScript代码.一旦我添加了语句,错误就会停止显示.不幸的是,谷歌没有透露这个字符串声明背后的历史.当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么.

那么它是"use strict";什么,它意味着什么,它是否仍然相关?

当前的任何浏览器都会响应"use strict";字符串还是将来使用?

javascript syntax jslint use-strict

7339
推荐指数
29
解决办法
105万
查看次数

JavaScript中的'new'关键字是什么?

newJavaScript中的关键字在第一次遇到时会非常混乱,因为人们倾向于认为JavaScript不是面向对象的编程语言.

  • 它是什么?
  • 它解决了什么问题?
  • 什么时候适当,什么时候不适合?

javascript new-operator

1684
推荐指数
12
解决办法
25万
查看次数

什么时候JavaScript的eval()不是邪恶的?

我正在编写一些JavaScript代码来解析用户输入的函数(用于类似电子表格的功能).解析了公式后,我可以将其转换为JavaScript并eval()在其上运行以产生结果.

但是,eval()如果我可以避免它,我总是回避使用,因为它是邪恶的(而且,无论是对还是错,我一直认为它在JavaScript中更加邪恶,因为要评估的代码可能会被用户改变).

那么,什么时候可以使用它?

javascript coding-style eval

253
推荐指数
9
解决办法
8万
查看次数

Javascript是基于原型的语言是什么意思?

据说Javascript的一个主要优点是它是一种基于原型的语言.

但是,Javascript基于原型是什么意思,为什么这是一个优势呢?

javascript oop inheritance prototype-programming

247
推荐指数
7
解决办法
5万
查看次数

Node.js - 使用module.exports作为构造函数

根据Node.js手册:

如果希望模块导出的根是函数(例如构造函数),或者如果要在一个赋值中导出完整对象而不是一次构建一个属性,请将其分配给module.exports而不是export .

给出的例子是:

// file: square.js
module.exports = function(width) {
  return {
    area: function() {
      return width * width;
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用:

var square = require('./square.js');
var mySquare = square(2);
console.log('The area of my square is ' + mySquare.area());
Run Code Online (Sandbox Code Playgroud)

我的问题:为什么示例不使用square作为对象?以下是否有效,是否使示例更"面向对象"?

var Square = require('./square.js');
var mySquare = new Square(2);
console.log('The area of my square is ' + mySquare.area());
Run Code Online (Sandbox Code Playgroud)

javascript commonjs node.js

114
推荐指数
2
解决办法
11万
查看次数

JavaScript中的多维关联数组

有以下查询结果:(key1和key2可以是任何文本)

id   key1     key2     value

1    fred     apple    2
2    mary     orange   10
3    fred     banana   7
4    fred     orange   4
5    sarah    melon    5
...
Run Code Online (Sandbox Code Playgroud)

我希望将数据存储在网格中(可能作为一个数组)循环所有记录,如下所示:

         apple    orange   banana  melon
fred        2        4         7     -
mary        -        10        -     -
sarah       -        -         -     5
Run Code Online (Sandbox Code Playgroud)

在PHP中,使用关联数组非常简单:

$result['fred']['apple'] = 2;
Run Code Online (Sandbox Code Playgroud)

但在像这样的JavaScript关联数组中不起作用.阅读了大量的教程后,我能得到的就是:

arr=[];
arr[1]['apple'] = 2;
Run Code Online (Sandbox Code Playgroud)

arr['fred']['apple'] = 2;不起作用.我尝试过对象数组,但对象属性不能是自由文本.我阅读教程越多,我就越困惑......

欢迎任何想法:)

javascript associative-array multidimensional-array

73
推荐指数
5
解决办法
20万
查看次数

JavaScript:好的部分 - 如何不使用`new`

Crockford的书,JavaScript:The Good Parts,(第114页)说构造函数应始终给出带有首字母大写字母(即Point)的名称,并且带有首字母大写字母的函数名称只能与构造函数一起使用(其他一切都应该是lowerCase).

这个约定有助于我们避免忘记使用new构造函数的运算符.

他接着说,"更好的应对策略是根本不使用new."

我的问题是,我们如何编程JavaScript而不使用它new

  • 我们可以避免new Object()new Array()文字{}[].
  • 我们能够避免new Number(),new Boolean()以及new String()0,true''.
  • 我们可以避免new RegExp()类似的事情/pattern/.

我们如何避免new Date()

而且,最重要的是,我们如何避免使用new自己的自定义对象?

javascript oop constructor new-operator

57
推荐指数
5
解决办法
2万
查看次数

Array()vs new Array()

两者之间有什么区别(如果有的话)

x = Array()
Run Code Online (Sandbox Code Playgroud)

x = new Array()
Run Code Online (Sandbox Code Playgroud)

我应该使用哪一个?

javascript arrays

53
推荐指数
4
解决办法
2万
查看次数

我的JavaScript模式/实践很糟糕.我应该在哪里寻求帮助?

在过去的几年里,我几乎专注于后端任务,我刚刚注意到,在我缺席的情况下,大多数JavaScript(和CoffeeScript)项目都变得更加漂亮.

我主要在rails环境中工作,几乎所有的JavaScript/jQuery都看起来像这样:

$(an_element).an_event(function() {
  stuff_i_want_to_do;
})

$(another_element).some_other_event(function() {
  some_other_stuff_i_want_to_do;
})
Run Code Online (Sandbox Code Playgroud)

抛开回调,这几乎就是它.

无论如何,只是浏览一些其他人的代码,并注意到许多javascripters在我不在的时候变得更漂亮.这并不复杂,但它是我所见过的更新/更好的JavaScript方法的典型:

jQuery -> 
  if $('#products').length
    new ProductsPager()

class ProductsPager
  constructor: (@page = 1) ->
    $(window).scroll(@check)

  check: =>
    if @nearBottom()
      @page++
      $(window).unbind('scroll', @check)
      $.getJSON($('#products').data('json-url'), page: @page, @render)
#

  nearBottom: =>
    $(window).scrollTop() > $(document).height() - $(window).height() - 50

  render: (products) =>
    for product in products
      $('#products').append Mustache.to_html($('#product_template').html(), product)
    $(window).scroll(@check) if products.length > 0
Run Code Online (Sandbox Code Playgroud)

我一直在寻找有关JavaScript(和/或CoffeeScript)的现代最佳实践/模式的资源,但我没有太多运气.所以简而言之,我应该在哪里加快速度:最好的javascript/coffeescript现代模式和实践?

javascript jquery ruby-on-rails coffeescript

47
推荐指数
2
解决办法
3941
查看次数

var x = new Array()有什么问题;

在JSLint中,它警告说

var x = new Array();
Run Code Online (Sandbox Code Playgroud)

(这不是一个真正的变量名称)应该是

var result = [];
Run Code Online (Sandbox Code Playgroud)

第一种语法有什么问题?这个建议背后的原因是什么?

javascript jslint

38
推荐指数
4
解决办法
2万
查看次数