`

JavaScript开发中一些问题(一)

阅读更多

JavaScript开发中一些问题(一)

作用域
在方法中未采用var 声明的变量会作为全局变量使用

function testScope( ) {
    var  testVar = "测试使用";//局部变量
}
function  test(  ){
         testScope( );
         alert( testVar );
}
test(  ) ;//错误未定义

 
代码中的testScope方法中testVar 变量中带有var所以执行test方法时会提示testVar未定义即testVar为局部变量
删除变量testVar前的var,testVar 变成全局变量,在其他方法中也能使用

function testScope( ) {
      testVar = "测试使用";//全局变量
}
function  test(  ){
         testScope( );
         alert( testVar );
}
test(  ) ;//弹出测试使用

 
这是会弹出“测试使用”的提示框。

=、==、===
=
为赋值,这个就不用说了

== 为等值比较

该比较不为恒等,会做相应的类型转换
如 alert( '0001' == 1  ); 为TRUE。
即使用 == 时不为同类型的数据时,它会向低类型转换,所以'0001'转换成Int型就为1。所以 '0001' == 1 为TRUE
相应的还有
alert( '0' == false ); alert( '1' == true );TRUE与false会转换为0与1
注 alert( 'true' == true );为false

===
当使用===时,它不会做相应的类型转换,而是直接做比较,不同的类型为不等。
这样alert( '0001' ===1  );alert( '0' === false ); alert( '1' === true );为false


数组相关

字符串做数组的键

var stringArr = new Array( );
stringArr[ 'test1' ] = "测试1";
stringArr[ 'test2' ] = "测试2";

 

取值alert( stringArr[ 'test1' ] );
遍历所有的值

for( var key in stringArr ){

         alert( stringArr[ key ] );//输出数组元素的值

}

 

注意对应该类型的数组toString的方法并未生成相应的字符串
alert( stringArr.toString( ) );无结果输出
//非键值类的数组toString(),将生成相应的字符串

var stringArr = new Array( '1','2' );
alert( stringArr.toString(  ) );//输出的结果为1,2

 

数组赋值的问题
我们把一个数组作为一个参数传入函数中,在函数中修改该数组值,所有与该数组相关的变量发生改变。
数组赋值或者作为参数传递时它是引用传递 如以下代码

var stringArr = new Array( '1','2','3' );
var tempArr = stringArr ;
tempArr[ tempArr.length ] = '4';
alert( stringArr.toString() );//结果为 1,2,3,4
alert( tempArr.toString() );//结果为 1,2,3,4

 

对于数组中的元素如果也是数组,它对应的也为引用及改变单个数组中的元素,所有包含该数组的变量也发生变化

如以下代码

var stringArr = new Array(  );
stringArr[ 0 ] = tempArr = new Array( '1','2','3' );
stringArr[ 1 ] = 'k';
alert( stringArr.toString() );//结果为 1,2,3,k
tempArr[ tempArr.length ] = '4';
alert( tempArr.toString() );//结果为 1,2,3,4
alert( stringArr.toString() );//结果为 1,2,3,4,k

 
 

通过上面的描述我们在对数组赋值时,如果通过赋值的方式给数组赋值,它所对应的引用都是一个。
怎样产生新的数组,并与原数组不为同一引用,有两种方法一种为 concat(),slice( );

var stringArr = new Array( '1','2','3' );
tempArr  = stringArr.concat(  );
//tempArr  = stringArr.slice( 0 );
tempArr[ tempArr.length ] = '4';
alert( stringArr.toString() );//结果为 1,2,3
alert( tempArr.toString() );//结果为 1,2,3,4

 

注意如果子元素也是数组的分级按以上方法处理

var stringArr = new Array(  );
stringArr[ 0 ] = new Array( '1','2','3' );
stringArr[ 1 ] = 'k';
tempArr  = stringArr.concat(  );
//tempArr  = stringArr.slice( 0 );
stringArr[ 0 ][ stringArr[ 0 ].length ] = 4; 
tempArr[ 1 ] = 'f';
alert( stringArr[ 0 ].toString() );//结果为 1,2,3,4
alert( stringArr.toString() );//结果为 1,2,3,4,k
alert( tempArr[ 0 ].toString() );//结果为 1,2,3,4
alert( tempArr.toString() );//结果为 1,2,3,4,f

 
为什么stringArr[ 0 ]与tempArr[ 0 ]的值一致,因为他们对应的子元素的引用并没有改变,而只改变了tempArr的引用

    如何得到两个完全不同数组,只能一层一层的处理,只要是数组就应该做相同的处理

var stringArr = new Array(  );
var tempArr= new Array(  );
stringArr[ 0 ] = new Array( '1','2','3' );
stringArr[ 1 ] = 'k';
for( var i = 0; i< stringArr.length; i++ ){
         tempArr[ i ]  = stringArr[ i ].concat(  );
}
stringArr[ 0 ][ stringArr[ 0 ].length ] = 4;   
alert( stringArr[ 0 ].toString() );//结果为 1,2,3,4
alert( stringArr.toString() );//结果为 1,2,3,4,k
alert( tempArr[ 0 ].toString() );//结果为 1,2,3
alert( tempArr.toString() );//结果为 1,2,3,k

 
stringArr[ 0 ]与tempArr[ 0 ]的值不一致了,这样才是两个完全不一样的数组

函数作为参数传递

 

<script>
//callback为一个函数的形参,根据传入的函数名,调用不同的函数
function testFun( callback , str ){
   callback( str  );
}
function callback( ){
 alert( "callback" );
}
function testStr( str ){
    alert( str )
}
//调用testStr的函数
testFun( 'testStr', 'testStr');//弹出的结果为testStr,并未调用callback
</script>

 

1
1
分享到:
评论

相关推荐

    JavaScript开发工具 共享

    在JavaScript开发过程中,一些常用的工具包括: 1. **编辑器**:编辑器是开发的基础,一个好的编辑器可以提供代码提示、自动完成、语法高亮等功能。例如,VS Code(Visual Studio Code)是一款非常流行的免费编辑器...

    JavaScript前端开发案例教程-源代码.rar

    这个名为"JavaScript前端开发案例教程-源代码.rar"的压缩包文件提供了一系列实践案例,帮助开发者深入理解和掌握JavaScript在网页开发中的应用。 首先,JavaScript是一种解释型、弱类型、基于原型的脚本语言,它的...

    JavaScript 程序开发手册

    JavaScript 程序开发手册JavaScript 程序开发手册JavaScript 程序开发手册JavaScript 程序开发手册JavaScript 程序开发手册JavaScript 程序开发手册

    JavaScript开发技术大全 pdf

    总的来说,《JavaScript开发技术大全》这本书将帮助读者全面了解JavaScript的各个方面,从基础到高级,从理论到实践,从而成为一名精通JavaScript的开发者。无论是前端开发、后端开发还是全栈开发,JavaScript都是一...

    JavaScript开发技术大全.zip

    本资源“JavaScript开发技术大全.zip”显然是一份全面的学习资料,涵盖了JavaScript开发的各个方面。以下是根据标题和描述提炼出的一些关键知识点: 1. **基础语法**:JavaScript的基础包括变量、数据类型(如字符...

    Eclipse配置Javascript开发环境图文教程

    首先,我们需要安装Spket插件,Spket是一个为Eclipse提供的JavaScript开发工具包,它提供了代码补全、验证等功能,能够极大提高JavaScript开发的效率。安装Spket的过程这里不再详细说明,一旦安装完成,即可进行后续...

    javascript开发工具

    在本文中,我们将深入探讨JavaScript开发工具的重要性和它们提供的多种功能。 首先,我们来理解为什么需要JavaScript开发工具。JavaScript是一种广泛应用于Web开发的动态编程语言,它负责网页的交互性和动态效果。...

    javascript实用开发手册大全

    首先,JavaScript是Web开发中不可或缺的一部分,它是一种脚本语言,主要运行在浏览器环境中,用于实现客户端的交互性和动态功能。JavaScript语法简洁,学习曲线相对平缓,但功能强大,可以处理DOM操作、事件处理、...

    Javascript开发技术大全源代码

    本资源“Javascript开发技术大全源代码”提供了一个全面的JavaScript学习和实践平台,涵盖了从基础到高级的各种技术。 在JavaScript的世界里,了解基本语法是至关重要的。这包括变量、数据类型(如字符串、数字、...

    javascript 网页开发实例教程

    JavaScript是网页开发中不可或缺的一部分,它是一种轻量级的脚本语言,主要负责网页的动态交互功能。本实例教程旨在帮助任何级别的读者,无论是初学者还是有经验的开发者,都能深入理解和掌握JavaScript在网页开发中...

    ARCGIS API for JavaScript 开发文档 完整版

    ARCGIS API for JavaScript 是一款由Esri公司提供的强大地图开发工具,用于构建基于Web的地理信息系统(GIS)应用。这个API允许开发者使用JavaScript语言在网页上创建交互式的地图服务,实现地图的显示、图层操作、...

    javascript开发文档

    JavaScript是一种广泛应用于Web开发的脚本语言,由Netscape公司的Brendan Eich在1995年创造。...这些知识构成了JavaScript开发的基础,通过深入学习和实践,开发者可以构建出功能丰富的Web应用程序。

    JavaScript前端开发程序设计教程(微课版)-PPT课件.zip

    JavaScript作为Web开发中的重要语言,是前端开发的核心技术之一,尤其在构建动态、交互式的网页应用中发挥着关键作用。本教程《JavaScript前端开发程序设计教程(微课版)》旨在帮助初学者和有一定基础的开发者深入...

    SuperMap for JavaScript开发教程

    《SuperMap for JavaScript开发教程》是一本专注于使用SuperMap软件进行Web GIS开发的详细指南。SuperMap是一款强大的地理信息系统(GIS)软件,它提供了一系列工具和技术,使得开发者能够构建地图应用,实现对地理...

    五子棋inhtml5是一款使用Javascript开发的开源小游戏

    【标签】"JavaScript开发-游戏开发"表明了此项目的核心技术和领域。对于想要涉足JavaScript游戏开发的程序员来说,五子棋inhtml5是一个很好的起点。它展示了JavaScript在游戏开发中的实际应用,包括基本的事件处理、...

    JavaScript&jQuery;交互式Web前端开发

    交互式Web前端开发》欢迎选择一种更高效的学习JavaScript和jQuery的方式。你是一名JavaScript新手?或是您曾经向自己的Web页面上添加过一些脚本,但想以一种更好的方式来实现它们?本书非常适合您。《JavaScript&...

    JavaScript设计模式与开发实践.pdf

    "JavaScript设计模式与开发实践....《JavaScript设计模式与开发实践》是JavaScript开发人员不可或缺的指南,它可以帮助读者掌握JavaScript设计模式和开发实践的知识,提高软件的质量和可维护性,并提高自己的职业发展。

    JavaScript 开发手册.CHM

    JavaScript 开发手册 1、JavaScript 基础语法I 2、JavaScript 控制语句 3、JavaSoript HTML DOM对象 4、JavaScript 函数与事件 5、JavaScript 表单及表单事件

    JavaScript开发积分兑换小程序项目源代码.zip

    JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码JavaScript开发积分兑换小程序项目源代码。...

Global site tag (gtag.js) - Google Analytics