关于js 中函数的参数
var a = 100;
function test(a){
a++; //a(形参)是局部变量
console.log(a);
}
test(a);
console.log(a); //结果是 101 100;
函数的参数是属于函数内部变量,外部无法访问到,即使与外部变量同名;它们也是两个不同的变量
类似于:
var a = 100;
function test( ){
var a=100; //a是局部变量
a++;
console.log(a);
}
test( );
console.log(a); //结果 101 100;
*****************************************************
当函数没有定义参数或者内部没有var 变量,内部的变量默认为全局变量;例如:
var a = 100;
function test( ){
a++ ;
console.log(a);
}
test( );
console.log(a); //第一个返回101;第二个101;a是全局变量
******************************************************
当函数定义了参数,没有传实参时,形参默认为undefined:
var a = 100;
function test(a){
a++ ;
console.log(a);
}
test( );
console.log(a); //第一个返回undefined;第二个100;
**************************************************************
但是如果是通过对象传递参数,函数内部对象属性值发生改变,外部被传递对象的属性值也会改变;
var a= {x:100};
function test (a){
a.x++; //修改参数对象a.x的值,函数外定义的a也将会被修改
console.log(a.x);
}
test(a);
console.log(a.x); // //第一个返回101;第二个101;
总结:通过值传递参数时
在函数中调用的参数是函数参数(属于局部变量范畴).如果函数修改参数值,将不会改变外部被引用的实参值;
通过对象传递参数时
对象属性的变量是相当于一个指针,因此函数修改对象的属性值时,外部的对象属性值也会改变
这也是涉及到基本类型和引用类型的值;基本数据类型(undefined,null,boolean,Number)是按值访问的,所以局部变量与全局变量即使两个名字一样,也是两个不同的变量;
总之 第一、函数参数是被当作变量对待的;第二、参数是按值传递的;第三、传递参数时要确定传递的数据类型;
对象属于引用类型,当变量是一个对象时,将这个变量赋给另一个变量时,相当于另一个变量也变为指针;两个变量都指向同一对象;所以在引用数据类型中,变量相当于一个指针;
(注:javascript高级程序设计第四章 变量、作用域和内存 有详解介绍);
关于js 中函数的参数的更多相关文章
- js中函数的参数为函数的情况即回调函数
js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ...
- JS中函数参数和函数返回值的理解
函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...
- JS中URL编码参数(UrlEncode)
JS中URL编码参数(UrlEncode) 网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数.参数parameter由于用类似URL的 ...
- 关于js中函数的调用问题
js中函数的调用方法 1.直接调用 函数名(参数): 2.通过指向函数的变量去调用 例如: var myval = 函数名: 此刻 myval是指向函数的一个指针: myval(实际参数):此刻调用的 ...
- js中函数传参的情况
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 对JS中函数的理解
函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...
- 如何理解javaSript中函数的参数是按值传递
本文是我基于红宝书<Javascript高级程序设计>中的第四章,4.1.3传递参数小节P70,进一步理解javaSript中函数的参数,当传递的参数是对象时的传递方式. (结合资料的个人 ...
- 【2017-06-27】Js中获取地址栏参数、Js中字符串截取
一.Js中获取地址栏参数 //从地址栏获取想要的参数 function GetQueryString(name) { var reg = new RegExp("(^|&)" ...
- JS中函数void()
<a href="javascript:void(0)">hello</a>/* * JS中函数void()的运用大体是这种新式; * void()是运算符 ...
随机推荐
- Eclipse中文件夹变成包的解决办法(python版)
问题展示如下: 如图,框中的三个文件夹都变成了包的样子. 解决方法如下: 1.在项目文件夹上右键,打开属性框 2.将PYTHONPATH中,Source Folders中的文件夹都删除.即可看到包已变 ...
- JSON的key值为数字时如何使用
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript(Standard ECMA-262 ...
- Vue-think脚手架
准备重构的项目,原来的后台是thinkPHP写的,刚刚摸VUE,不知道里面数据调用原理,想先安装vuethink学习一下. 结果安装半天,npm run dev的时候报错,尝试了很多方法,各种重装,看 ...
- CentOS安装pip并修改源为豆瓣源
使用yum进行安装 yum install python-pip 若出现 No package python-pip available. 则解决方法如下: yum -y install epel-r ...
- js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码
最近看不少在线工具里面都有一些编码转换的代码,很多情况下我们都用得到,这里脚本之家小编就跟大家分享一下这些资料 Unicode介绍 Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编 ...
- BT网站--Python开发爬虫代替.NET
BT网站-奥修磁力-Python开发爬虫代替.NET写的爬虫,主要演示访问速度和在一千万左右的HASH记录中索引效率. IBMID 磁力下载- WWW.IBMID.COM 现在用的是Python + ...
- Python常用的标准库以及第三方库有哪些?
20个必不可少的Python库也是基本的第三方库 读者您好.今天我将介绍20个属于我常用工具的Python库,我相信你看完之后也会觉得离不开它们.他们是: Requests.Kenneth Reitz ...
- Hadoop基础入门
一.hadoop是什么? (1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式.Hadoop= ...
- Mercurial stuck “waiting for lock”, tortoisehg pull版本卡住在等待 解决办法
最近使用hg的时候,拖取版本一直卡住不动.报错类似waiting for lock on working directory of xxxx held by ''. 原本以为是网络不好或者hg安装有问 ...
- vue 权限管理深度探究
实现思路如下:1.网页路由(route)中定义的每个路由都有meta属性,属性值防止可访问该路由的值.2.路由的全局前置守卫(beforeEach)会判断路由用户是否登录(未登录跳转至登录界面),以及 ...