版权所有,转载请注明来源http://qyj.iteye.com,违者必究!
1、动态类型
javascript是一种松散类型的语言。换句话说,不必提前声明保存在变量中的数据是什么类型。而javascript则会根据赋给变量的数据,自动推断其类型。
如:
//在javascript中声明变量
var number = 5;
var value = 12.34567;
var active = true;
var text = 'qyj.iteye.com';
方便之处:不知道保存什么数据,就可以声明和命名变量。甚至随意改变保存的数据类型。
如:var value = 999;
value = 99.9;
value = false;
当然这样做只是告诉大家javascript可以这样做,但并不提倡甚至反对这样做。
如果你不确定某个变量中保存着什么类型的数据,可以使用typeof操作符:typeof 变量名 ,返回类型。
2、变量提升
在我们的印象里,浏览器会从上到下依次执行javascript代码。但有时候也不一定!比如,下面的代码,你觉得变量i什么时候有定义?
var numLoops = 1000; for(var i=0;i<numLoops;i++){ console.log(i); }
在其他很多语言中,i会到for循环开始才被声明,这符合我们的预期。但由于存在一种叫做变量提升的机制,javascript中的变量会被提升到函数上下文的顶部。对于前面的例子,i实际上在for循环开始之前就有了定义。下面的代码跟上面的代码是等价的:
var numLoops = 1000; var i; for(i=0;i<numLoops;i++){ console.log(i); }
所以,如果变量名字有冲突,变量提升可能就会带来问题。
3、函数级作用域
在编程领域,变量作用域这个概念用于区分在哪个环境下可以访问哪些变量。一般很多语言都有块级作用域 ,也就是在当前“块”中,变量才有定义。这里的“块”通常指花括号。但是在javascript中的变量只能限制在函数中(而不是任何块),即在函数中声明的变量只能在函数内部访问。
关键要记住:要想封闭某个值,就得把它们放到函数里。
4、全局命名空间
window在浏览器中是一个顶级的对象,包含所有javascript中能直接访问到的对象。即,你每次都在全局作用域声明新变量,那这个变量就会被加到window对象下面。(“你在污染全局命名空间”)。
解决这个问题有两个简单的办法
a、只在函数里声明变量。
b、只声明一个全局对象,然后把你本来想作为全局变量的值都作为这个全局对象的属性。如:
var qyj = {};
qyj.age = 27;
qyj.sex = '男';
这样,所有的变量都会被关在qyj这个笼子里。
相关推荐
本文将详细探讨一些常见的JavaScript陷阱,并提供相应的解决方案。 #### 双等号(==)与类型强制转换 在JavaScript中,双等号`==`操作符在比较两个值时会进行类型转换,这意味着即使两边的数据类型不同,也会尝试...
本文将深入探讨一些常见的JavaScript陷阱,并提供相应的解决策略。 1. **变量作用域**: - 全局变量和局部变量的区分不明确可能导致变量污染。全局变量在整个代码中都可以访问,而局部变量仅在函数内部有效。不...
以下是一些常见的JavaScript陷阱及其详细解释: 1. **浮点运算误差**: JavaScript中的浮点数运算可能会导致看似不准确的结果,例如`0.02 / 0.1`并不等于0.2,而是`0.19999999999999998`。这是由于二进制浮点数...
在“js-pitfall-examples”这个项目中,我们收集了一些常见的JavaScript陷阱,通过实例来帮助开发者更好地理解并避免这些问题。 1. **变量提升(Hoisting)** 在JavaScript中,变量声明会被提升到它们所在的作用域...
### JavaScript陷阱:字符运算 在JavaScript编程中,字符运算经常被用到,但由于其灵活性以及动态类型特性,很容易出现一些意想不到的结果,导致程序出现错误或不符合预期的行为。本文将详细介绍几种常见的...
JavaScript陷阱和常见错误 1. 0是虚假的,但"0"是正确的。 if ( 0 ) { console . log ( 'yey.' ) ; } else { console . log ( 'boom' ) ; // this will be printed } if ( "0" ) { console . log ( 'yey.' ) ; // ...
此外,书中还会涉及错误处理、调试技巧、性能优化以及如何避免常见的JavaScript陷阱。这些都是实践中必不可少的知识,能帮助你写出更加健壮的代码。 附带的源代码.zip文件包含书中所有示例和练习的源代码,读者可以...
***mon JavaScript "Gotchas"(常见的JavaScript陷阱):这些陷阱通常是指那些容易出错的地方,比如变量作用域、异步编程的复杂性等,理解这些可以避免在开发中犯一些常见的错误。 7. Asynchronous JS: Callbacks, ...
在探讨JavaScript中的全局对象陷阱时,主要的焦点是理解JavaScript函数和方法中的this关键字的指向问题。在JavaScript中,this关键字的值取决于函数的调用方式,这与Java等其他语言存在明显的不同。在Java中,方法中...
它的一些特点包括:简洁的语法、避免常见的JavaScript陷阱、自动管理的数组索引等。 #### 3. MVVM 双向绑定实现 MVVM(Model-View-ViewModel)模式通过观察者模式来实现视图和模型之间的双向数据绑定。具体来说,...
JavaScript中的`this`关键字是一个非常重要的...理解`this`的关键在于识别函数是如何被调用的,这对于避免常见的JavaScript陷阱至关重要。在编写JavaScript代码时,正确地使用`this`可以提高代码的可读性和可维护性。
你将学会如何使用console.log进行调试,如何组织代码结构,以及如何避免常见的JavaScript陷阱。 此外,手册可能还会涉及JavaScript的最新特性,如ES6引入的箭头函数、模板字符串、解构赋值、类和模块等,以及后续...
【JavaScript基础概念与常见陷阱】 JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器环境中执行,赋予网页动态功能。...理解这些问题有助于开发者避免常见的JavaScript陷阱并写出更健壮的代码。
这是一个常见的JavaScript陷阱,因为实际上`null`不是对象,但它在`typeof`操作中的结果是`object`。这是由于历史遗留问题导致的。 以上就是从题目中提取出的一些JavaScript基础知识点的详细介绍。对于初学者来说,...
- 常见错误分析:理解并避免常见的JavaScript陷阱,如变量提升、类型转换错误等。 - 性能优化:减少DOM操作,使用事件委托,以及缓存策略来提升页面性能。 - 兼容性问题:处理不同浏览器对JavaScript支持的差异,...
在JavaScript中,`this`是一个特殊的关键词,它用于在函数或方法中引用当前上下文的对象。`this`的值取决于函数被调用的方式,而不是函数声明的位置,这与...正确理解和使用`this`可以避免许多常见的JavaScript陷阱。
JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它具有独特的语法特性和陷阱,对于初学者或经验丰富的开发者来说,...了解并避免这些JavaScript陷阱,有助于编写更健壮、可维护的代码,让编程生活更加轻松。