我有一个JavaScript名称空间说
A={
CA: function() {
this.B();
},
B: function() {
var test='test';
var result='t1';
C: function() {
this.test='test1';
.....
.....
return 'test1';
}
result=this.C();
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
现在当我执行这样的代码时,它给出了TypeError:this.C不是一个函数.有人可以告诉我为什么会这样.我知道这与词汇范围有关,但我无法理解这一点.
如何检测其他组件中的语言变化?我的检测是在标头组件中进行的。我的目标是检测语言变化并设置样式。
子组件:
import { TranslateService } from "ng2-translate";
export class ChildComponent{
public browserLang: string;
constructor(private translate: TranslateService) {
this.browserLang = translate.getBrowserLang();
}
}
Run Code Online (Sandbox Code Playgroud)
儿童的HTML:
<div ng-class="{black: browserLang == 'en', red: browserLang == 'de'}" >
Run Code Online (Sandbox Code Playgroud)
结果是:未添加类。如果我输出语言字符串(en)是正确的。但是它没有听任何更改。如何使其听和改变课堂?
介绍
我正在使用Angular 6。
Angular使用打字稿,因此您可以键入函数的参数:
public fun1(aaa: number) {
console.log(aaa);
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试fun1使用其他类型的参数进行调用-我会收到错误消息:
public fun2() {
this.fun1([1, 2, 3]); // TS2345: Argument of type 'number[]' is not assignable to parameter of type 'number'
}
Run Code Online (Sandbox Code Playgroud)
问题
如果我可以控制文件中的参数,则类型检查效果很好。
但是也许fun1用我从后端得到的一些参数来调用。
Typescript在运行时无法正常运行,因此不会显示任何错误,它的代码fun1只能与一起运行[1, 2, 3]。
-编辑-
后端响应不是问题的唯一来源。有时,库可以更改您的数据类型,而您可能对此一无所知。一个示例是将Reactive Forms与应为数字的控件一起使用-编辑数字时,它将转换为字符串。
题
在运行时是否有一些通用的类型检查方法?
我想到了类似的东西:
public fun1(aaa: number) {
if (typeof aaa !== 'number') {
console.warn('wrong type');
} else {
console.log(aaa);
}
}
Run Code Online (Sandbox Code Playgroud)
但是WebStorm然后告诉我typeof check is always false: 'aaa' always has type …
灵感来自这个问题:
在给定的例子中,我决定测试是否reduce比filterplus 更快map.
我做了一个小提琴:
var data = Array(10 ** 4).fill(null).map((_, i) => {
return {
checked: Math.random() < 0.5,
val: Math.floor(Math.random() * 10000)
}
})
f1 = () => {
t0 = performance.now();
data.filter(el => el.checked).map(el => el.val)
t1 = performance.now();
// console.log("filter plus map took " + (t1 - t0) + " milliseconds.")
document.getElementById('filterPlusMap').innerText = t1 - t0;
}
f2 = () => {
t0 = performance.now();
data.reduce((prev, curr) => { …Run Code Online (Sandbox Code Playgroud)假设我们有三个列表:
listA = [5,6,2]
listB = [7,1]
listC = [5,3,6]
Run Code Online (Sandbox Code Playgroud)
我想在一个for循环中对这些列表进行排序,所以做类似的事情:
for thisList in [listA, listB, listC]: # edited, was 'list' here
thisList = thisList.sort()
Run Code Online (Sandbox Code Playgroud)
哪里thisList会listA,然后listB,然后listC,所以在最后我的名单会是这样的:
listA = [2,5,6]
listB = [1,7]
listC = [3,5,6]
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
注意 - 这只是一个例子,我正在处理的问题有点难,但我想做一个我需要的简单例子.
- 编辑 -
如果我想在这里进行一些自定义排序怎么办?我知道,例如,我可以这样进行自定义排序:myList = sorted(myList,key = lambda val:val/2)
但我正在使用sorted,而不是sort在这里.
我可以使用自定义排序sort吗?
询问原因给出答案(thx btw;))正在使用sort......
javascript ×3
angular ×2
ecmascript-6 ×1
html ×1
methods ×1
python ×1
sorting ×1
typescript ×1