java -jar myWorkingJar.jar
#!/bin/bash
JARNAME=myJar.jar # enter your JAR's name here
OUT_JARNAME=myJar_out.jar # enter your output JAR's name here
# Creating the directory, unpacking the JAR, entering META-INF/
mkdir temp
unzip $JARNAME -d temp
cd temp/META-INF
# Renaming the troublemakers.
rename 's/\.DSA$/.DSA.old/' *
rename 's/\.SF$/.SF.old/' *
# Reassembling the JAR
cd ../
jar cfm ../$OUT_JARNAME ./META-INF/MANIFEST.MF -C ./ .
cd ../
# Uncomment this line if you wish to delete the temp directory upon finish.
# rm -r temp
或groups= [];
getGroup(id){
const s = groups.find(t => t.id === id);
return s;
}
getGroup(id){
var s = groups.find(t => t.id === id);
return s;
}
getGroup(id){
let s = groups.find(t => t.id === id);
return s;
}
定义s
?var
的值保留在可以快速处理并避免某些let
循环的某些数据结构中? 答案 0 :(得分:2)
var
的作用域为 nearest 功能块,而let
的作用域为 nearest 封闭模块。
让我们假设您有一个函数,并且在该函数内部有一个for循环。如果使用var
定义和声明迭代器,则可以在函数外部访问它:
function foo() {
for(var i = 0; i <= 5; i++) {
console.log(i);
}
// i is 6
console.log(i);
}
如果您改用let
,则i
的作用域将仅限于最近的封闭块,即for循环:
function foo() {
for(let i = 0; i <= 5; i++) {
console.log(i);
}
// i is undefined
console.log(i);
}
但是通常来说,至少在使用ES2015时,我几乎永远不会在var
上使用let
。也就是说,我真的无法想到var
有意义而let
没有意义的情况。另外,如果您需要重新分配变量,请使用let
,并且如果永不重新分配变量,请使用const
。
请记住,const
仅表示原始值而不是对象的不变性,这意味着即使您使用const
,您仍然可以更改对象的属性。它只能防止重新分配变量。
在大多数情况下,我个人使用const
。
答案 1 :(得分:1)
有很多不错的资源,它们提供了有关 [link1,link2]的更多详细信息。摘要如下:
与您的 lambda表达式有关-这些是javascript中的箭头函数,并为函数表达式提供了较短的语法。
现在有了一些上下文,可以内联查询查询:
var
或let
定义s?
var
在约束方面要宽松得多,因此全局范围内具有相同标识符的任何变量都将受到影响。 let
使此块处于范围内。find
函数采用arrow函数来执行布尔检查。答案 2 :(得分:-1)
let 和 const 键相同,只有不同之处
let 关键字是块范围的,它可以在块内访问,并且与 const 相同,我们不能直接更改 const 变量的值,但可以更改对象的引用。