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 ...
随机推荐
- java抽象类
Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类除了不 ...
- java中接口的定义和接口的实现
1.接口的定义 使用interface来定义一个接口.接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interfa ...
- [转]RMAN检测数据库坏块
backup validate check logical database; select * from v$database_block_corruption; RMAN> backup v ...
- QT的程序开机自启动方法
/home/fa/.config/lxsession/LXDE/autostart文件最后添加脚本
- Composer 学习笔记
Composer 是 PHP 的一个依赖管理工具(据说是最优秀的).它允许你申明项目所依赖的代码库,它会在你的项目中为你安装他们.目前很多项目以Composer 作为依赖管理工具,目前正在学习yii2 ...
- CSP -- 运营商内容劫持(广告)的终结者
缘由 我们公司最近手机端H5 经常受到商户和用户的投诉,说有广告并且导致不能正常进行操作,我们商户自己当然不会加广告了,但是商户和用户可不管这些了,就认为是我们的问题 探索发现根本 目前我们用的很多浏 ...
- 利用mask layer 勾View
#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width #define SCREEN_HEIGHT [[UIScreen main ...
- SQL常用代码段
--STUFF 函数将字符串插入另一字符串.它在第一个字符串中从开始位置删除指定长度的字符:然后将第二个字符串插入第一个字符串的开始位置. STUFF ( character_expression , ...
- C#多线程环境下调用 HttpWebRequest 并发连接限制
C#多线程环境下调用 HttpWebRequest 并发连接限制 .net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 win ...
- angularJS实现可编辑的下拉框
将angularJS与插件select2结合使用即可 <!DOCTYPE html><html lang="en"><head> < ...