我正在阅读一个幻灯片,上面写着"JavaScript是无类型的".这与我认为的真实相矛盾,所以我开始尝试去学习更多.
JavaScript的每个答案都是一种无类型的语言?他说,JavaScript 不是无类型的,并且提供了各种形式的静态,动态,强大和弱类型的例子,这些都是我熟悉和满意的......所以这不是可行的方法.
所以我问了JavaScript的创建者Brendan Eich,他说:
学术类型使用"无类型"来表示"无静态类型".他们足够聪明,可以看到价值观有类型(呃!).背景问题.
以学术为中心的计算机科学人员是否使用"无类型"作为"动态类型"的同义词(并且这是有效的吗?)还是有更深层次的东西让我失踪?我同意布兰登的观点,认为背景很重要,但任何解释的引用都会很棒,因为我目前的"去"书并没有在这个主题上发挥作用.
我想要明确这一点,以便我可以提高我的理解,因为即使维基百科也没有提到这种替代用法(无论如何我都能找到).如果我错了,我不想在将来使用该术语或质疑该术语的使用:-)
(我也看到一个顶级的Smalltalker说Smalltalk也是"无类型的",所以这不是一次性的,这就是让我完成这个任务!:-))
标题说明了一切,但我会提供更多说明:
看到许多javascript示例,其中所有变量都被声明为类型var
,并且看到对其他数据类型的支持,为什么不声明这样的特定数据类型的变量?意思是,为什么不是这样的:
string hello = 'Hello, World'
用来代替
var hello = 'Hello, World'
查看像OReilly Javascript这样的网站显示其他类型的保留字.再次,为什么不使用它们?难道不会这样做:typeof(variable)==='string';
不再需要吗?
Angular2的新手,试图在我的本地系统上运行这个plunkr项目.我收到以下错误:
错误:(25,23)TS2339:'PeopleService'类型中不存在属性'people'.错误:(26,39)TS2339:'人''类型中不存在属性'人'
在线:
peopleService.people .subscribe(people => this.people = people);
我有理由相信我已正确设置了环境,因为我正在运行其他基本组件.
people.ts文件:
import {Component, View, CORE_DIRECTIVES} from 'angular2/angular2'
import {PeopleService} from './peopleService'
import {Person} from './person'
@Component({
selector: 'my-app',
providers: [PeopleService]
})
@View({
template: `
<div>
<h2>Hello Angular2!</h2>
<my-person
*ng-for="#person of people"
[name]="person.name"
(hello)="saidHello($event)">
</my-person>
</div>
`,
directives: [CORE_DIRECTIVES, Person]
})
export class People {
constructor(public peopleService:PeopleService) {
peopleService.people
.subscribe(people => this.people = people);
}
saidHello($event){
alert(`You said hello to ${$event}`)
}
}
Run Code Online (Sandbox Code Playgroud)
peopleService.ts文件中的类似错误:
错误:(8,14)TS2339:'PeopleService'类型中不存在属性'people'.
//a simple …
Run Code Online (Sandbox Code Playgroud) 我在下面的代码中犯了一个错误。在变量“x”中,我存储了字符串“s”中的一个字符。然后,我错误地增加了“x”,这导致了代码后给出的错误。为什么 JS 允许我首先增加一个字符变量?如何防止发生此类错误?
function jsFun(s){
var x = s.charAt(0);
s++;//Wrong !
x = s.charAt(1);
return x;
}
console.log(jsFun("one"));
Run Code Online (Sandbox Code Playgroud)
错误:在第 4 行。
TypeError: s.charAt is not a function
Run Code Online (Sandbox Code Playgroud)