当你运行时npm install --save somepackage
,它通常会在package.json中添加这样的东西:
"dependencies": {
"somepackage": "^2.1.0"
}
Run Code Online (Sandbox Code Playgroud)
因为版本前面带有插入符号(^),这意味着如果稍后运行npm install
,它可能会安装版本2.3.0.出于相当明显的原因,这可能是不可取的 npm shrinkwrap
很有用,但并没有真正解决问题.
所以,我有几个问题:
在Douglas Crockford 所着的Javascript:The Good Parts一书中,这是作者对继续声明所说的全部内容:
该
continue
声明跳转到循环的顶部.我从未见过一段没有通过重构来删除continue
语句而得到改进的代码.
这真让我困惑.我知道Crockford对JavaScript有一些非常自以为是的看法,但这对我来说听起来完全错了.
首先,continue
不仅仅是跳到循环的顶部.默认情况下,它也会进入下一次迭代.那么克罗克福德的陈述是不是完全虚假的信息呢?
更重要的是,我并不完全理解为什么continue
甚至会被认为是坏事.这篇文章提供了似乎一般的假设:
为什么在循环中继续一个坏主意?
虽然我理解continue
在某些情况下如何使代码难以阅读,但我认为它可以使代码更具可读性.例如:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]==='number'){
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这可以重构为:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]!=='number'){
continue;
}
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
Run Code Online (Sandbox Code Playgroud)
continue
在这个具体的例子中并不是特别有益,但它确实证明了它减少了嵌套深度的事实.在更复杂的代码中,这可能会提高可读性.
Crockford没有解释为什么continue
不应该使用,所以这个意见背后有一些更深层次的意义,我错过了吗?
第一次运行 NPM 包时npx
,会提示是否下载该包。
例如,如果您运行命令npx some-npm-package
,您将收到以下提示:
Need to install the following packages:
some-npm-package
Ok to proceed? (y)
Run Code Online (Sandbox Code Playgroud)
npx
如果以编程方式执行并且您无法手动键入输入,则会出现问题。
如何才能自动接受这个提示呢?
我有一个非常简单的集合,但我似乎无法绑定它的变化事件.在Chrome的控制台中,我正在运行:
var c = new AwesomeCollection();
c.bind("change", function(){
console.log('Collection has changed.');
});
c.add({testModel: "Test"}); // Shouldn't this trigger the above log statement?
Run Code Online (Sandbox Code Playgroud)
由于这是难以追查的事情之一,我怀疑是否有人知道发生了什么事情(如果是这样,很棒!).所以,我问两个问题:
谢谢
W3C "与HTML4的HTML5差异"工作草案指出:
对于HTML语法,作者需要声明字符编码.
"必需"是什么意思?
显然,浏览器仍然会在没有charset元标记的情况下呈现HTML5.如果未指定编码,浏览器将使用哪种编码?
基本上,我想知道是否确实需要包含<meta charset="">
,或者99%的浏览器是否会使用正确的编码.
基本上,我有一个包含表单的页面.当用户提交该表单时,将调用Javscript函数并向用户动态显示新表单.
此时,我希望用户能够单击浏览器的后退按钮并返回到第一个表单.这可能吗?
感谢您的快速回复,但我无法让pushState工作.单击后退按钮后,HTML仍显示"第二个表单".
这是我用来测试它的代码:
<script>
function newPage(){
history.pushState({state:1}, "State 1", "?state=1");
document.getElementById('formBox').innerHTML="second form";
}
</script>
<input type="button" onclick="newPage();" value="forward" />
<div id='formBox'>first form</div>
Run Code Online (Sandbox Code Playgroud) 全局变量是否存储在特定对象中?例如:
var test="stuff";
console.log(window.test);
console.log(document.test);
console.log(this.test);
Run Code Online (Sandbox Code Playgroud)
所有这三个测试都会产生undefined
,那么是否有一个包含这些变量的对象?
我觉得这应该是我应该已经知道的愚蠢,但我似乎无法在网上找到答案.
我正在尝试设置我Router
使用"hashbang"URL(#!
).
我尝试过这个,但显然它不起作用:
App.Router.map(function() {
this.route("index", { path: "!/" });
this.route("otherState", { path: "!/otherState" });
});
Run Code Online (Sandbox Code Playgroud)
这可以在Ember做吗?
据我所知,CSP可以用于所有相同的事情X-XSS-Protection
.如果您使用的是CSP,还有什么好的理由可以使用X-XSS-Protection
吗?
我试图将data-testid
属性传递给 Material-UISelect
组件,但收到以下 Typescript 错误:
输入 '{ "data-testid": string; }' 不可分配给类型“HTMLAttributes”。对象文字只能指定已知属性,并且“HTMLAttributes”类型中不存在“data-testid”。
Select.d.ts(111, 3):预期类型来自属性“SelectDisplayProps”,该属性在类型“IntrinsicAttributes & SelectProps”上声明
这是由以下代码引起的:
import React from "react";
import Select from "@material-ui/core/Select";
import MenuItem from "@material-ui/core/MenuItem";
export default function MyComponent() {
return (
<Select SelectDisplayProps={{ "data-testid": "my-component" }}>
<MenuItem value="1">One</MenuItem>
<MenuItem value="2">Two</MenuItem>
<MenuItem value="3">Three</MenuItem>
</Select>
);
}
Run Code Online (Sandbox Code Playgroud)
当 data-* 属性直接传递给组件(例如 )时,这似乎不是问题<Select data-testid="my-component" />
,因此问题在于将其传递给SelectDisplayProps
.
所有SelectDisplayProps
要做的就是将 props 传递给内部的子元素<Select>
(文档)。
我该如何修复这个错误?
javascript ×4
npm ×2
back ×1
backbone.js ×1
browser ×1
continue ×1
ember-router ×1
ember.js ×1
hashbang ×1
html5 ×1
http-headers ×1
material-ui ×1
meta ×1
node.js ×1
npx ×1
object ×1
package.json ×1
reactjs ×1
readability ×1
shell ×1
typescript ×1
url ×1
version ×1
w3c ×1