`
kkvsyy
  • 浏览: 30218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript 陷阱

 
阅读更多

版权所有,转载请注明来源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这个笼子里。

 

0
0
分享到:
评论

相关推荐

    Javascript中的陷阱大集合【译】

    本文将详细探讨一些常见的JavaScript陷阱,并提供相应的解决方案。 #### 双等号(==)与类型强制转换 在JavaScript中,双等号`==`操作符在比较两个值时会进行类型转换,这意味着即使两边的数据类型不同,也会尝试...

    javascript-gotchas:javascript 陷阱

    本文将深入探讨一些常见的JavaScript陷阱,并提供相应的解决策略。 1. **变量作用域**: - 全局变量和局部变量的区分不明确可能导致变量污染。全局变量在整个代码中都可以访问,而局部变量仅在函数内部有效。不...

    帮助避免错误的Javascript陷阱清单

    以下是一些常见的JavaScript陷阱及其详细解释: 1. **浮点运算误差**: JavaScript中的浮点数运算可能会导致看似不准确的结果,例如`0.02 / 0.1`并不等于0.2,而是`0.19999999999999998`。这是由于二进制浮点数...

    js-pitfall-examples:常见的 JavaScript 陷阱示例

    在“js-pitfall-examples”这个项目中,我们收集了一些常见的JavaScript陷阱,通过实例来帮助开发者更好地理解并避免这些问题。 1. **变量提升(Hoisting)** 在JavaScript中,变量声明会被提升到它们所在的作用域...

    javascript陷阱 一不小心你就中招了(字符运算)

    ### JavaScript陷阱:字符运算 在JavaScript编程中,字符运算经常被用到,但由于其灵活性以及动态类型特性,很容易出现一些意想不到的结果,导致程序出现错误或不符合预期的行为。本文将详细介绍几种常见的...

    ist的matlab代码-js-gotchas:JavaScript陷阱和常见错误

    JavaScript陷阱和常见错误 1. 0是虚假的,但"0"是正确的。 if ( 0 ) { console . log ( 'yey.' ) ; } else { console . log ( 'boom' ) ; // this will be printed } if ( "0" ) { console . log ( 'yey.' ) ; // ...

    JavaScript修炼之道英文清晰PDF版(含代码)

    此外,书中还会涉及错误处理、调试技巧、性能优化以及如何避免常见的JavaScript陷阱。这些都是实践中必不可少的知识,能帮助你写出更加健壮的代码。 附带的源代码.zip文件包含书中所有示例和练习的源代码,读者可以...

    [JavaScript][PDF][英文版]Oh My JS

    ***mon JavaScript "Gotchas"(常见的JavaScript陷阱):这些陷阱通常是指那些容易出错的地方,比如变量作用域、异步编程的复杂性等,理解这些可以避免在开发中犯一些常见的错误。 7. Asynchronous JS: Callbacks, ...

    Javascript 陷阱 window全局对象

    在探讨JavaScript中的全局对象陷阱时,主要的焦点是理解JavaScript函数和方法中的this关键字的指向问题。在JavaScript中,this关键字的值取决于函数的调用方式,这与Java等其他语言存在明显的不同。在Java中,方法中...

    JavaScript面试题阿里巴巴JavaScript面试题 阿里巴巴

    它的一些特点包括:简洁的语法、避免常见的JavaScript陷阱、自动管理的数组索引等。 #### 3. MVVM 双向绑定实现 MVVM(Model-View-ViewModel)模式通过观察者模式来实现视图和模型之间的双向数据绑定。具体来说,...

    JavaScript程序设计-javascript中的this.pdf

    JavaScript中的`this`关键字是一个非常重要的...理解`this`的关键在于识别函数是如何被调用的,这对于避免常见的JavaScript陷阱至关重要。在编写JavaScript代码时,正确地使用`this`可以提高代码的可读性和可维护性。

    javascript中文手册和基本教程

    你将学会如何使用console.log进行调试,如何组织代码结构,以及如何避免常见的JavaScript陷阱。 此外,手册可能还会涉及JavaScript的最新特性,如ES6引入的箭头函数、模板字符串、解构赋值、类和模块等,以及后续...

    超实用的javascript代码段30道题目答案.pdf

    【JavaScript基础概念与常见陷阱】 JavaScript是一种广泛应用于Web开发的脚本语言,它在浏览器环境中执行,赋予网页动态功能。...理解这些问题有助于开发者避免常见的JavaScript陷阱并写出更健壮的代码。

    JavaScript基础练习_day1

    这是一个常见的JavaScript陷阱,因为实际上`null`不是对象,但它在`typeof`操作中的结果是`object`。这是由于历史遗留问题导致的。 以上就是从题目中提取出的一些JavaScript基础知识点的详细介绍。对于初学者来说,...

    悟透javascript

    - 常见错误分析:理解并避免常见的JavaScript陷阱,如变量提升、类型转换错误等。 - 性能优化:减少DOM操作,使用事件委托,以及缓存策略来提升页面性能。 - 兼容性问题:处理不同浏览器对JavaScript支持的差异,...

    11-this:从JavaScript执行上下文的视角讲清楚this_For_vip_user_0011

    在JavaScript中,`this`是一个特殊的关键词,它用于在函数或方法中引用当前上下文的对象。`this`的值取决于函数被调用的方式,而不是函数声明的位置,这与...正确理解和使用`this`可以避免许多常见的JavaScript陷阱。

    JavaScript的9个陷阱及评点分析

    JavaScript是一种广泛应用于网页和网络应用开发的脚本语言,它具有独特的语法特性和陷阱,对于初学者或经验丰富的开发者来说,...了解并避免这些JavaScript陷阱,有助于编写更健壮、可维护的代码,让编程生活更加轻松。

Global site tag (gtag.js) - Google Analytics