javascript的类型、值和变量
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的类型、值和变量的更多相关文章
- javascript 核心语言笔记- 3 - 类型、值和变量
JavaScript 中的数据类型分为两类:原始类型(primitive type)和对象类型(object type).原始类型包括数字.字符串和布尔值 JavaScript 中有两个特殊的原始值: ...
- JavaScript由浅入深(一)——类型、值和变量
JavaScript是一门面向web的.高端的.动态的.弱类型的编程语言,是学习web前端开发必备的基础技能之一.JavaScript最初是一门脚本语言(scripting-language),它 ...
- Javascript权威指南——第二章词法结构,第三章类型、值和变量,第四章表达式和运算符,第五章语句
第二章 词法结构 一.HTML并不区分大小写(尽管XHTML区分大小写),而javascript区分大小写:在HTML中,这些标签和属性名可以使用大写也可以使用小写,而在javascript中必须小写 ...
- 第三章:Javascript类型、值和变量。
计算机程序的运行需要对值(value)比如数字3.14或者文本"hello world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type),编程语言最基本的特 ...
- JavaScript的类型、值和变量的总结
前言:JavaScript的数据类型分为两类:原始类型和对象类型.5种原始类型:数字.字符串.布尔值.null(空).undefined(未定义).对象是属性的集合,每个属性都由“名/值对”(值可以是 ...
- 笔记《JavaScript 权威指南》(第6版) 分条知识点概要2—类型、值、变量
[类型.值.变量]数字.文本.布尔值.null和undefined.全局对象.包装对象.不可变的原始值和可变的对象引用.类型转换.变量声明.变量作用域 P44~71(PDF版).P32~59(书版) ...
- Javascript权威指南阅读笔记--第3章类型、值和变量(1)
之前一直有个想法,好好读完JS权威指南,便于自己对于JS有个较为全面的了解.毕竟本人非计算机专业出生,虽然做着相关行业的工作,但总觉得对于基础的掌握并没有相关专业学者扎实,正好因为辞职待业等原因,还是 ...
- JavaScript权威指南第03章 类型、值和变量(1)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/huangbin10025/article/details/27953481 类型.值和变量 数据类型 ...
- JavaScript权威指南--类型、值和变量
本章要点图 数据类型:计算机程序的运行需要对值(value)比如数字3.14或者文本"hello world"进行操作,在编程语言中,能够表示并操作的值的类型叫做数据类型(type ...
- JavaScript权威指南科03章 种类、值和变量(1)
种类.值和变量 数据类型分类: 基本类型(primitive type):数位 弦 布尔值 null undefined 对象类型(object type): 对象是属性的集合,每一个属性都由&quo ...
随机推荐
- 【整理】强化学习与MDP
[入门,来自wiki] 强化学习是机器学习中的一个领域,强调如何基于环境而行动,以取得最大化的预期利益.其灵感来源于心理学中的行为主义理论,即有机体如何在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的 ...
- Windows7 IE11 F12控制台DOC资源管理器报错的问题解决方法
------------------ Diagnostic: Exception in window.onload: Error: An error has ocurredJSPlugin.3005 ...
- alternatives命令用法
alternatives是Linux下的一个功能强大的命令.只能在根权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用替代指定一个全局的设置.alternatives常用于同一个 ...
- mysql performance_schema 和information_schema.tables了解
这个是关于mysql的系统表,性能表,核心表操作的一些介绍,深入算不上 我们一般很少去动 mysql information_schema 信息相关 performance_schema 性能相关 ...
- context上下文 php版解释
context翻译为上下文其实不是很好,只是翻译理解大概的作用,对于开发来说,context是对定义的使用的变量,常量或者说是配置, 部分的函数功能除了缺省值之外,往往需要手动设置一些定义量来配合当前 ...
- 如何使用QQ号进行快捷登录
注意:第三步回调地址域名必须严格按照规范填写否则无法使用.QQ回调地址域名为您的网站地址无论您是否为DISCUZ论坛,请全部使用网站申请.discuz论坛申请的KEY无效注册QQ登录应用将会获得该应用 ...
- yxcms后台验证码不显示?怎么取消yxcms后台验证码
嗨,大家好,我是YXCMS的小M老湿,(其实还是习惯大家叫我猪猪吧!)今天又要分享一则yxcms的使用技巧,当然也是yxcms用户在使用过程中很容易出现的小白问题,当然还是同样,yxcms的大神级别的 ...
- 掌握Thinkphp3.2.0----连贯操作
其实在TP中,说起来语句中的各个关键词都被封装成了函数,将各个由关键词演变来的函数连起来就是所谓的连贯操作.只要注意各个函数直接参数传递的区别就可以了. 再者,不是所有的函数都可以进行连贯操作!!!比 ...
- xcode国际化工具genstrings体验总结
genstrings是苹果推出的一个用于自动从代码的nslocalizedstring等提取生成国际化字符串的工具: xcode的国际化文件方案一直以来都不太智能,我记得很久以前.strings文件库 ...
- C++ 环形缓冲区的实现
参考文章:http://blog.csdn.net/linyt/article/details/53355355 本文参考linux系统中 kfifo缓冲区实现.由于没有涉及到锁,在多线程环境下,只适 ...