js的类型有多种分类,原始类型(数值,字符串,布尔值,null,undefined)和对象类型(object,String,Number,RgbExp等),或者是拥有方法的类型(object,String,Number,RgbExp,数值,字符串,布尔值等)和没有方法的类型(null,undefined)等。

js变量是无类型的,也即变量可以被赋予任何类型的数值。

js对数字的操作:

不区分整数值和浮点数值,js中的所有数都是使用的浮点数表示的,能够表示的数值范围(-900719925470992~9007199254700992),超过此范围,js就无法保证低位数的精度。js用Infinity表示正无穷,用—Infinity表示负无穷,用NaN表示非数字

算术运算:加(+)减(-)乘(*)除(/)求余(%),除此之外还有借助Math对象来实现的

     Math.pow(2,1)  //2的53次幂

     Math.round(2.4)//四舍五入

     Math.ceil(2.4) //向上取整

        Math.floor(2.4) //向下取整

     Math.abs(-3) //绝对值

      Math.min(2,1)//最小值

      Math.max(2,1) //最大值

      Math.exp(2) //e的2次幂

      Math.random() //生成一个0到1之间的随机数

      Math.PI//圆周率

      Math.E//自然对数的底数

二进制浮点数和四舍五入错误:

  js采用的二进制浮点数,因此有限多个实数,因此大多数的js表示的实数都只是近似值,比如0.3-0.1和0.2-0.1不相等,因此在进行js运算时,要尽量避免浮点数的相加减。

将数字转换成字符串:

可以简单地调用toString(c1)方法,且此方法接受一个可选的参数,c1代表转换基数。比如var n = 17;n.toString(2) = 10001;当c1不存在时,默认的转换基数为10;另外Number为数字转换成字符串的机制设置了三种方式,分别是

toFixed(c1)c1代表保留小数的位数,这种方式,不会转换成科学计数法

toExponential(c1)c1代表有效位数,这种方式采用科学计数法

toPrecision(c1)c1代表有效位数,当c1小于n的整数位数时,采用科学计数法,反之采用直接转换法

js对字符串的操作:

将字符串转换为数字:

Number()这种方式可以将数字字符串转换成整数或浮点数字面量,基数只能是10,并且,字符串中不能包含其他的非法字符后缀

parseInt()只解析字符串中的整数,如果有前缀o,则解析成8进制,有前缀0x,则解析成 16进制

parseFloat()可以解析字符串的浮点数

parseInt()和parseFloat()在解析字符串的时候,如果第一个非空格字符是非法的数字直接量(比如“.8”、"abc89"),都会返回NaN。

字符串前直接加“+”或“-”这种方式可以将数字字符串转换成整数或浮点数字面量,基数只能是10,并且,字符串中不能包含其他的非法字符后缀

另外补充加号的作用及用法(

作用:

1.正数表示法

2.相加符号

3.字符串之间的连接符

用法:

1、如果+(加号)两边都是数字,则肯定是加法运算

2、如果+两边有boolean、number类型或null值的某一个,则是加法运算,比如:1+true是2,true+true也是2,null+false是0,1+null是1

3、如果加号两边有最少一边是字符串,则是字符串拼按,比如1+”abcd”

4、如果加号两边最少有一边是是对象类型,这个对象先对象它的toString方法,然后再做字符串拼接,比如:(这些涉及到一些对象的原理性的东西,先做简单了解,以           后会讲)5+[1,2,3,4]  是51,2,3,4   比如({}+{})是 "[object Object][object Object]"

5、数字、布尔、null和undefined做加运算的结果是NaN。

对象转换为原始值:

toString(),函数、数组、正则、时间对象都可以使用这个方法转换成相对应的字符串。

valueOf()很多对象使用这个方法会放回对象本身,而不是原始值。时间类型的对象会返回毫秒数。

对象到字符串的转换会首先考虑toString(),再考虑valueOf();而对象到数值的转换,会首先考虑valueOf(),再考虑toString()

js对变量的操作:

js的预编译规则,是当处理器首次扫描文档时,首先会将声明的参数、函数、变量名(值为undefined)放入内存,(声明提前)然后再从上到下执行上下文。其中执行变量值的优先级是函数—>参数—>变量名 。看下面的例子:

1.下面这个例子中,第一个a是因为 ,当执行到函数时,此时函数内部定义了局部变量,所以在函数预编译的时候,先是将变量a(值为undefined)存入内存,当执行上下文到alert(a)的时候,a=undefined;第二个a就是全局a;

var a = 1;
function fn1() {
alert( a ); //underfined
var a = 2;
}
fn1();
alert( a ); //1
2.下面这个例子中,第一个a是因为,当执行到函数的时候,函数内部没有定义a,此时沿着作用域链向上查找到全局的a=1;第二个a是因为 在函数内部的定义的a是全局变量,在执行了fn1()之后,a=2的值取代了a=1的值

var a = 1;

function fn1() {
alert( a );// 1
a = 2;
}
fn1();
alert( a ); //2

3.当存在参数时,因为执行到函数的时候,由于js的预编译中,优先级是函数大于参数大于变量,所以使得第一个a=function a(){ }而不是3
var a = 3;
function test( a ){
alert( a ); //function a(){ }
var a = 123; 
function a(){ }
alert( a ); //123
}
test(a); 
下面是一些例子:
例1.

var a = 1;

function fn1() {
alert( a );//1
a = 2;
}
fn1(a);
alert(a);//2;

例2.

var a = 10;
function aaa() {
alert( a );
}
function bbb() {
var a = 20;
aaa();
}
bbb();//10
例3.
function a(i) {
alert(i);//10
alert(arguments[0]); //arguments[0]应该就是形参 i     //10
var i = 2;
alert(i);//2
alert(arguments[0]);//2
};
a(10);

javascript的类型、值和变量的更多相关文章

  1. javascript 核心语言笔记- 3 - 类型、值和变量

    JavaScript 中的数据类型分为两类:原始类型(primitive type)和对象类型(object type).原始类型包括数字.字符串和布尔值 JavaScript 中有两个特殊的原始值: ...

  2. JavaScript由浅入深(一)——类型、值和变量

      JavaScript是一门面向web的.高端的.动态的.弱类型的编程语言,是学习web前端开发必备的基础技能之一.JavaScript最初是一门脚本语言(scripting-language),它 ...

  3. Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句

    第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...

  4. 第三章:Javascript类型、值和变量。

    计算机程序的运行需要对值(value)比如数字3.14或者文本"hello world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type),编程语言最基本的特 ...

  5. JavaScript的类型、值和变量的总结

    前言:JavaScript的数据类型分为两类:原始类型和对象类型.5种原始类型:数字.字符串.布尔值.null(空).undefined(未定义).对象是属性的集合,每个属性都由“名/值对”(值可以是 ...

  6. 笔记《JavaScript 权威指南》(第6版) 分条知识点概要2—类型、值、变量

    [类型.值.变量]数字.文本.布尔值.null和undefined.全局对象.包装对象.不可变的原始值和可变的对象引用.类型转换.变量声明.变量作用域 P44~71(PDF版).P32~59(书版) ...

  7. Javascript权威指南阅读笔记--第3章类型、值和变量(1)

    之前一直有个想法,好好读完JS权威指南,便于自己对于JS有个较为全面的了解.毕竟本人非计算机专业出生,虽然做着相关行业的工作,但总觉得对于基础的掌握并没有相关专业学者扎实,正好因为辞职待业等原因,还是 ...

  8. JavaScript权威指南第03章 类型、值和变量(1)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/huangbin10025/article/details/27953481 类型.值和变量 数据类型 ...

  9. JavaScript权威指南--类型、值和变量

    本章要点图 数据类型:计算机程序的运行需要对值(value)比如数字3.14或者文本"hello world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type ...

  10. JavaScript权威指南科03章 种类、值和变量(1)

    种类.值和变量 数据类型分类: 基本类型(primitive type):数位 弦 布尔值 null undefined 对象类型(object type): 对象是属性的集合,每一个属性都由&quo ...

随机推荐

  1. 关于history的Linux命令行

    1.使用 HISTTIMEFORMAT 显示时间戳当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身.如果你想要查看命令历史的时间戳,那么可以执行: # export H ...

  2. 星外Xday提权

    在星外不是安全模式的时候 但是又没有执行目录 有时候远程调用也不行对吧 winrar 有执行权限的时候C:\windows\IIS Temporary Compressed Files\  这个目录有 ...

  3. PHP性能监测的工具介绍 - XHProf

    http://segmentfault.com/a/1190000003509917 http://www.cnblogs.com/casatwy/archive/2013/01/17/2865241 ...

  4. C语言中定义全局变量

    (1)在C语言的头文件中定义变量出现的问题 最好不要傻嘻嘻的在头文件里定义什么东西.比如全局变量: /*xx头文件*/ #ifndef  _XX_头文件.H #define  _XX_头文件.H in ...

  5. iTop Webservice列表

    { u'operations':[ { u'verb':u'core/create', u'description':u'Create an object', u'extension':u'CoreS ...

  6. array题目合集

    414. Third Maximum Number 给一个非空的整数数组,找到这个数组中第三大的值,如果不存在,那么返回最大的值.要求时间复杂度为o(n) 例如: Example 1: Input: ...

  7. Redhat 一则关于路由及DNS配置的实例

    安装了Redhat 7.2, 配置路由, 但发现路由重启之后,不能生效. 配置路由: touch /etc/sysconfig/static-router, 然后编辑路由信息如下. any defau ...

  8. Linq分组

    1.lin语句 int[] nums = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0, 3 }; DataTable table = new DataTable("Numb ...

  9. IntelliJ IDEA中如何显示和关闭----工具栏,目录栏,(转)

    工具栏:就是上面有个好多的快捷按钮的那个栏,比如撤销,上传,下载设置,扳手按钮,等等. 目录栏,就是刚刚装的时候,这个会显示,但是不知道怎么关闭,但是这个又没什么用. 如图: 就是对应的几个按钮,自己 ...

  10. Android Studio踩坑记

    1. 模拟器在管理器中可以运行,但是点击run时死活找不到:    在sdk的/platform-tools/目录下找到adb.exe工具    打开cmd,输入下面两条命令    adb kill- ...