Javascript -- 函数及基本数据类型
2012-09-05 18:43
363 查看
1: 函数,解释不会检查参数的个数,只需用argument[0],argument[1]...来引用就行。
因为上面的原因,所以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中的局部变量搞混了。
函数声明与函数表达式
解释器在加载数据的时候会先读取函数声明,也就是编译出二进制代码;而函数表达式必须等到解释器执行它所在的代码行,才会对它进行解释,所以如下
函数名仅仅是一个指针而已,它里面保存的是函数的位置,所以我们可以把它赋给另一个变量,这样新变量同样指向了函数。
函数的属性和方法
1:this 是函数在执行时所处的作用域(在网页的全局作用域中调用函数时,this对象引用的就是window)
2:arguments 包含函数中的所有参数,它有一个callee属性,该属性是一个指针,用于指向拥有这个arguments对象的函数。
3:每个函数都包含两个非继承而来的方法:apply()和call()。主要用途现在你定义了一个方法f,里面然后你想对对象o也调用这个方法,这个就是一个解决的途径。其实我感觉凡是调用call()的方法,里面的实现肯定是利用this,对当前对象进行处理,否则假设你都是一些类似参数s,根本不牵涉到this的引用,那你还让我们给你传递一个对象干啥。如果对象有this引用的属性的话,就用o的,如果没有就相当与给o新建了这个属性
基本包装类型
因为我们前面也说了5个基本数据类型,不是对象,但是我们平常有需要对这些基本数据类型进行操作,比方说string.substring(2),本来都是对象才有方法的。现在我们平常如何能够正常使用呢?
实际上每当读取一个基本数据类型的时候,后台都会创建一个对应的基本包装类型的对象。然后用这个对象调用方法,然后再删掉这个对象。这种方式主要用于string,number,boolean值
Number
parseInt()/parseFloat(),如果参数为空字符串,或则字符串的开始字符不是数字时,它将会返回一个NaN(not a number)值.
String 方法
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);
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 引用全局变量color o.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)); //120 alert(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(); //上面已经说了,看函数所在的作用域,现在是网页中的全局,故是red saycolor.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(); //11 var 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高级程序设计01-基本概念、数据类型、函数
- (3)JavaScript基础(基本语法:变量与数据类型、类型转换、运算符、流程控制、函数、对象、自定义对象、原型)
- 学习笔记(二)JavaScript基本概念(语法,数据类型,控制语句,函数)
- php基本数据类型+数组常用函数
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- javascript复习笔记(一)js基础,基本语法,数据类型,控制流程
- C语言速成手册(一):基本数据类型、标准输出、函数
- JavaScript的基本数据类型
- 【JavaScript面向对象编程】20151229(函数,也是一种数据类型)
- javascript基本数据类型及类型检测常用方法小结
- JavaScript基本数据类型
- JAVA入门.零基础学Java语言 MOOC 第6周 使用对象(基本数据类型的包裹类型对象) 第7周 函数
- JavaScript 数据类型篇 - 基本(简单)数据类型
- 【JavaScript】JavaScript基础-基本数据类型与常量和关键字
- java中交换两个基本数据类型的变量函数swap怎么写
- javaScript基本数据类型
- JavaScript基础函数与数据类型
- 第一百零七节,JavaScript基本包装类型,数据类型的方法
- javascript类型系统之基本数据类型与包装类型
- JavaScript的变量及数据类型小结在 JavaScript 函数内部声明的变量