《JavaScript语言精粹》--附录A :毒瘤

/*
	毒瘤
		全局变量
			JS所有的糟糕特性之一,最为糟糕的一个就是它对全局变量的依赖
			三种方式创建全局变量:
				1. 在全局作用域放置一个var语句
				2. 在浏览器中,给window对象添加属性
				3. 直接使用未经声明的变量,称为隐式全局变量

		作用域
			声明变量的最好方式是在每个函数的开头部分声明所有变量

*/

/*自动插入分号*/
console.log((function() {
	return {
		message: "this is a message!"
	};
})());
console.log((function() {
	return {
		message: "this is a message!"
	};
})());
//输出:
// undefined 
// Object {message: "this is a message!"} 
//分析:
// 第一例函数内部return语句由于分号自动补全,实际上是:
// return;
// {
// 		message : "this is a message!"
// };
// 所以,实际上并没有返回任何值,JS中所有函数都有返回值,如果没有明确指定,则为undefined

/*
	Unicode
		JS字符为16位,Unicode把一对字符视为一个单一的字符,JS认为一对字符是两个不同的字符
*/

/*
	typeof
		typeof null 值为 'object'
		typeof /a/ 一些实现会返回'object',有些返回'function'
*/
console.log(typeof null);
console.log(typeof / ^ aaa$ / );
console.log(typeof[]);
console.log(typeof NaN);
console.log(typeof undefined);
//输出:
//object
//object
//object
//number
//undefined

/*
	parseInt
		这是一个把字符串转换为整数的函数,在遇到非数字时会停止解析
		parseInt可以接受一个基数作为参数,建议总是加上这个基数参数
*/
console.log(parseInt("16"));
console.log(parseInt("16asdf"));
console.log(parseInt("0x16", 10));
console.log(parseInt("0x16"));
//输出:
// 16
// 16
// 0
// 22

/*
	+
		打算用+去做加法运算,请确保两个运算数都是整数

	浮点数
		浮点数计算中小数可能不够精确,整数运算就是精确的

	NaN
		为IEEE754中定义的一个特殊的数量值,表示的不是一个数字,但typeof NaN的结果是number
		NaN不等于它自己,需要检测,使用isNaN()函数

	伪数组
		JS没有真正的数组
		typeof [] 返回object
		需要判断是否为一个数组,使用Object.prototype.toString.apply(my_value) === '[object Array]'
*/
console.log(typeof []);
console.log(Object.prototype.toString.apply([]) === '[object Array]');
//输出:
// object
// true

/*
	假值
		以下将被认为是假
			0 			Number
			NaN 		Number
			'' 			String
			false 		Boolean
			null 		Object
			undefined 	Undefined

		undefined和NaN并不是常量,他们是全局变量,可以改变它们的值,但不要这么做
*/
console.log(NaN in window);
console.log(undefined in window);
//输出:
// true
// true

/*
	hasOwnProperty
		一个方法,他可能会被一个不同的函数甚至一个非函数的值所替换

	对象
		JS的对象永远不会是一个真的空对象,它永远有原型
*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值