弱类型语言 是相对强类型语言来说的
站在用户的角度思考问题,与客户深入沟通,找到巴州网站设计与巴州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册、网络空间、企业邮箱。业务覆盖巴州地区。
在强类型语言中,变量类型有多种,例如int char float boolean 等
不同的类型相互转换有时需要强制转换
而javascript只有一种类型var ,为变量赋值时会自动判断类型并进行转换
所以javascript是弱语言
就体现在变量定义类型VAR上了
弱类型语言内存布局上一般是个Union结构,并且要包含一个类型字段,因为计算机底层还是要知道明确的类型信息。
因为包含类型信息,所以在代码的上下文中,可能会进行隐含的类型转换,比如把字符串转整型,整型转字符串,这样会稍损性能,并且可能会不符合程序本意。
弱类型语言都是脚本语言,在运行时确定值,所以跟编译不相关。
我的经验是弱类型在大项目开发上,还是不方便,需要在整个框架结构上做规范,否则多人合作开发比较麻烦。
弱类型使用简单,更灵活多变。对于程序员来讲这是个优点。
强类型语言,类型转换的时候非常严格,这跟语言特点有关系,
强类型语言是直接操纵内存,容易出内存越界和泄漏的问题。在类型的转换方面是很多约束,甚至强制转换也要很谨慎,一不小心就出大问题。
弱类型语言一般都会牺牲一些运行性能,不过简单好用,而且相对安全。
其实两种类型对应的语言本身其他的差异已经很大了,整个区别还是比较明显的。
弱类型语言也是有类型的。或者说,任何计算机语言都是要有类型的。
基本数据类型有:number、string、boolean、undefined、null
引用类型有:object、function
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var num = 123;
console.log(typeof num);//number
var str = 'string';
console.log(typeof str);//string
var bool = true;
console.log(typeof bool);//boolean
var undef = undefined;
console.log(typeof undef);//undefined
var nul = null;
console.log(typeof nul);//object。因为null代表对象是空的情况。
自动类型转换
1
2
3
4
"10.0"%"5"//结果是0,string类型自动类型转换为number类型
!0//结果是true,number类型自动转换为boolean类型
"10.0" + 5//结果是"10.05",number类型自动转换为string类型