Javascript -- 函数及基本数据类型
来源:互联网 发布:网络诈骗手段常见哪些 编辑:程序博客网 时间:2024/06/05 20:18
1: 函数,解释不会检查参数的个数,只需用argument[0],argument[1]...来引用就行。
function first(){ alert("hello" + argument[0] + argument[1]);}first("world","me");
因为上面的原因,所以Javascript就没有重载现象。
2:只支持值传递
基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置
引用类型值指的是那些保存在堆内存中的对象,意思是变量中保存的实际上只是一个指针,指向内存中的另一位置。
所以说我们在栈中既保存基本类型值,他们占据固定大小的空间,可以顺序访问;同时可以保存一块内存的地址,一个指向堆内存中位置的指针,而保存在堆内存中的数据不是按顺序访问的,因为每个对象所需要的内存空间并不相等。
5种基本数据类型:undefined,null,boolean,number,string他们都是在栈中占据固定大小。
在进行参数赋值或者实参赋值的时候,他们都是值传递,也就是在栈内存中会有一个值的副本,只是当你传给它的是一个对象的时候,因为值传递你把对象的值传给它,也就时传给它了指向堆中空间的地址。所以这个时候的改变可以影响到对象,其他比如基本数据类型了,都是互不相干,值相同而已。
typeof s 如果是string就返回string,但是如果s的值是Null的话,他就返回一个object
person instanceof object 如果person是object对象就返回真
没有块级作用域
比如下面的形式,正常情况下在if结束以后就不能反问到color了,但是在这里我们仍然能够访问到,同样需要注意的是for循环语句for(int i =0; i<5; i++)中的形式。注意不要跟function中的局部变量搞混了。
if (true){ var color = "blue";}alert(color); //"blue"
函数声明与函数表达式
解释器在加载数据的时候会先读取函数声明,也就是编译出二进制代码;而函数表达式必须等到解释器执行它所在的代码行,才会对它进行解释,所以如下
//可以正常运行alert(sum(10,10));function sum(num1, num2){ //在代码执行之前就加载到作用域中 return num1 + num2;}//没有函数名,因为你可以用sum访问到,并且最后别忘了有分号。alert(sum(10, 10)); //会报错,因为sum还没有被解释出来var sum = function(num1, num2){ return num1 + num2;};
函数名仅仅是一个指针而已,它里面保存的是函数的位置,所以我们可以把它赋给另一个变量,这样新变量同样指向了函数。
window.color = "red";var o = {color: "blue"};function saycolor(){ alter(this.color);}saycolor(); //red 引用全局变量coloro.saycolor = saycolor; //对象o新建一个属性叫saycolor方法o.saycolor(); //调用当前对象o的这个方法,所以返回blue
函数的属性和方法
1:this 是函数在执行时所处的作用域(在网页的全局作用域中调用函数时,this对象引用的就是window)
2:arguments 包含函数中的所有参数,它有一个callee属性,该属性是一个指针,用于指向拥有这个arguments对象的函数。
function factorial(n){ if(n <= 1){return 1; } else{return n * factorial(n-1); }}var f = factorial;alert(factorial(5)); //120alert(f(5)); //0,因为现在函数里面调用的还是factorial的对象return n * arguments.callee(n-1); //解决办法
3:每个函数都包含两个非继承而来的方法:apply()和call()。主要用途现在你定义了一个方法f,里面然后你想对对象o也调用这个方法,这个就是一个解决的途径。其实我感觉凡是调用call()的方法,里面的实现肯定是利用this,对当前对象进行处理,否则假设你都是一些类似参数s,根本不牵涉到this的引用,那你还让我们给你传递一个对象干啥。如果对象有this引用的属性的话,就用o的,如果没有就相当与给o新建了这个属性
window.color = "red";var o ={color:"blue"};function saycolor(s){ alert(this.color + s );}saycolor(); //上面已经说了,看函数所在的作用域,现在是网页中的全局,故是redsaycolor.call(o, " car"); //"blue car"对对象o调用saycolor方法,现在的this就是o中值
基本包装类型
因为我们前面也说了5个基本数据类型,不是对象,但是我们平常有需要对这些基本数据类型进行操作,比方说string.substring(2),本来都是对象才有方法的。现在我们平常如何能够正常使用呢?
实际上每当读取一个基本数据类型的时候,后台都会创建一个对应的基本包装类型的对象。然后用这个对象调用方法,然后再删掉这个对象。这种方式主要用于string,number,boolean值
Number
parseInt()/parseFloat(),如果参数为空字符串,或则字符串的开始字符不是数字时,它将会返回一个NaN(not a number)值.
var num = 10;alert(num.tostring(2)); //返回字符串"1010",2表示基数参数,默认是十进制alert(num.toFixed(2)); //返回字符串"10.00",2表示显示几位小数,常用于货币之类的运算alert(num.toExponential(1)); //返回字符串"1.0e+1",返回指数表示法,1表示小数位数
String 方法
var s= "hello world";alert(s.charAt(1)); //"e"alert(s.charCodeAt(1)); //"101"fromCharCode() //字符编码转换成字符串s.length(); //11var s1=s.concat("!"); //s1="hello world!"而s="hello world"也就是说改副本s1 = s + "!"; //比concat简便并且常用,结果是一样的,改副本alert(s.slice(3,7)); //"lo w"第一个是起始位置,第二个结束位置alert(s.substring(3,7)); //"lo w"跟slice等价alert(s.substr(3,7)); //"lo worl"第二个参数指定的是输出的个数alert(s.indexof("o")); //4 从前开始,o的下标 alert(s.lastindexof("o")); //7 从后开始,o的下标,既然是下标了,所以如果只有一个时它跟上面结果一样alert(s.indexof("o", 6)); //7 第二个参数指定起始位置alert(s.lastindexof("o", 6)); //4 alert(s.toUpperCase()); //"HELLO WORLD",是一个副本的值,原值不变alert(s.toLowerCase()); //"hello world"Math:
Math.cei() 向上舍如
Math.floor() 向下舍入
Math.round() 标准四舍五入,当时当Math.round(25.5)返回值26
Math.random()返回一个0到1之间的随机数,它常于Math.floor连用,因为它是向下舍入
var a = Math.floor(Math.random() * 10 + 1); // 返回一个介于1到10之间的数
Math.abs(n); //返回绝对值
Math.exp(n); //返回E的n次幂
Math.log(n); //返回n的自然对数
Math.pow(n,p); //返回n的p次幂
Math.sqrt(n); //返回n的平方根
Math.acos(x); //返回x的反余弦值
Math.asin(x); //返回x的反正弦值
Math.atan(x); //返回x的反正切值
Math.atan2(y,x); //返回y/x的反正切值
Math.cos(x);
Math.sin(x);
Math.tan(x);
- Javascript -- 函数及基本数据类型
- javascript新建对象及基本数据类型
- JavaScript学习笔记(一)基本概念及基本数据类型
- javascript基本数据类型
- javascript基本数据类型
- JavaScript基本数据类型
- javascript基本数据类型
- javascript基本数据类型
- JavaScript(2)----基本数据类型
- JavaScript的基本数据类型
- JavaScript的基本数据类型
- JavaScript基本数据类型
- javaScript基本数据类型
- javascript基本数据类型
- JavaScript基本数据类型综述
- javascript基本数据类型
- Javascript的基本数据类型
- javaScript基本数据类型
- hdu 1517 A Multiplication Game(博弈找规律)
- Uniform Generator 数学题
- 粒子群算法python实现
- C++虚函数和多态学习
- hdu Bus System(floyd)
- Javascript -- 函数及基本数据类型
- 2010-10-21 14:55 把自己的窗口从TASKBAR上干掉!【转】
- xml简单易懂的格式
- 关于使用highchart控件的心得。。
- NHibernate - Where ISession.Query<T>() is located
- google.load() 方法开发人员指南
- javascript:void(0)
- 设计模式C++实现(10)——桥接模式
- SqlDataReader的合适关闭方法?