javascript高级编程笔记02(基本概念)
ParseInt()函数:
由于Number函数在转换字符串时比较复杂而且不合理,我们常常转换字符串都用parseInt函数,
Parseint函数规则:
- 忽略字符串前面的空格,直到找到第一个非空格字符串
- 如果第一个字符串不是数字字符或是负号,就返回NaN,所以””返回NaN
- 如果第一个字符是数字字符,它会继续解析第二个字符,直到解析完所有后续字符或者遇到了非数字字符,例如,”123blue”转换为123,”22.5”会转换为22
- 如果字符串中的第一个字符是数字字符,parseInt()也能够识别出各种整数格式,包括十六进制,八进制.
- ParseInt解析八进制自变量的时候有分歧
在es3中会按八进制自变量转换为十进制值
在es5中已经不能解析八进制的能力,会以十进制解析
- parseInt的第二个参数是转换时使用的基数即多少进制
- 一般我们都是用十进制转换,所以第二个参数最后为10
ParesFloat和parseInt类似
String类型
Es中的字符串是不可变的,字符串一旦创建,它们的值是不能改变,要改变某个保存的字符串,必须要销毁原来的字符串,然后在用另一个包含新值得字符串填充该变量
例如:
Var lang=”java”;
Lang=lang+”script”
实际操作为:首先创建一个能容纳10个字符串的新字符串,然后在这个字符串中填充java和script,最后一步是销毁原来的字符串java和字符串script,这就是在某些旧版本的浏览器中拼接字符串速度很慢的原因.但这些浏览器后来版本解决了这个问题.
转换为字符串:
- toStirng()
- 这个方法除了null和undefined其他都有.
- 可以传一个参数:表示输出数值的基数
2.String()
- 可以将null和undefined转换为string
- 如果值有toString方法,则调用该方法并返回相应的结果
- 如果值是null,则返回”null”
- 如果是undefined,则返回”undefined”
Object类型
Object的每个实例都具有下列属性和方法:
- Constructor:保存当前对象的函数,即构造函数
- hasOwnProperty(propertyName):用于检测给定的属性是否是这个对象的自身属性;
- IsPrototypeOf(Object):用于检测传入的对象是否是这个对象的原型
- propertyIsEnumerable(propertyName):用于检测属性是否能用for-in循环
- toLocaleStirng():返回对象的字符串表示.
- toString():返回对象字符串表示.
- ValueOf()返回对象字符串,数值或布尔值表示
操作符:
- 一元操作符:
一元操作符比较简单,只记录比较容易忽略的点
逻辑或:如果第一个操作数是对象,则返回第一个操作数
2.lable语句:
使用label语句可以在代码中添加标签,以便将来使用语法:
label:statement
3.break和continue语句
break语句会立即退出循环,
continue语句退出循环进入下一个循环
4.with语句
with语句的作用是将代码的作用域设置到一个特定的对象中,with语句的语法如下:
with(expression) statement
定义with语句的目的主要是为了简化多次编写同一个对象的工作,如下面的例子所示:
var qs=location.search.substring(1); var hostname=location.hostname; var url=location.href;
上面几行代码都包含location对象,如果使用with语句,可以把上面的代码改成如下所示:
with(location){
var qs=search.substring(1);
var hostname=hostname;
var url=href;
}
严格模式下不允许使用with语句,否则将视为语法错误
注意:由于大量使用with语句会导致性能下降,同时也会给调试代码的造成困难,因此在开发大型应用程序时,不建议使用with语句.
- 函数:
函数的参数与大多数其他语言中的参数有所不同,es函数不介意传递进来的多少参数,es中的参数在内部是用一个数组来表示的,函数接收到的始终都是这个数组,而不关心数组中包含哪些参数,在函数体内通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数.
其实,arguments对象只是与数组类似,
严格模式对如何使用arguments对象做出了一些限制:
- 赋值会变得无效
- 重写arguments的值会导致语法错误
- 没有重载
2、变量,作用域和内存问题
- 基本类型和引用类型
注意:在很多语言中,字符串以对象的形式表示,因此被认为是引用类型的,es放弃了这一传统
2.复制变量值:
基本类型复制会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上
引用类型复制也会将存储在变量对象中的值复制一份放到新变量分配的空间中,不同的是这个值得副本实际上是一个指针,而这个指针指向存储在堆中的一个对象
3.参数传递:
不管是值类型还引用类型函数的传递都是值传递,即将值传递给函数中的参数(这个参数是局部变量)
重点例子:
function setName(obj){
obj.name=”Nicholas”;//这个是赋值操作会影响外面的对象
obj=new Object();//这个赋值是将新的对象赋值给局部变量所以不影响外面的对象
obj.name=”aaa”
}
var preson=new Object();
setName(preson);
alert(person.name)// aaa
- 执行环境:
执行环境是javascript中最为重要的一个概念,执行环境定义了变量或函数有权访问的其他数据,每个执行环境都有一个与之关联的变量对象,环境中第一的所有变量和函数都保存在这个对象中.
全局执行环境是最外围的一个执行环境,在web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的,某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁.(全局执行环境直到应用程序退出时才会被销毁)
每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈中,而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境.
当代码在一个环境中执行时,会创建变量对象的一个作用域链,作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问,作用域链的前端,始终都是当前执行的代码所在环境的变量对象,如果这个环境是函数,则将气活动对象作为变量对象,活动对象在最开始时值包含一个变量,即argument对象,作用域链中的下一个变量对象来自包含环境,而在下一个变量对象则来自下一个包含环境,这样,一直延续到全局执行环境,全局执行环境的变量对象始终都是作用域链的最后一个对象.
有交流js各种框架的朋友可以加群252259003,可以讨论现在前端各种js框架,群主也会经常分享比较好的前端的技术文章地址.
javascript高级编程笔记02(基本概念)的更多相关文章
- javascript高级编程笔记01(基本概念)
1.在html中使用JavaScript 1. <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...
- javascript高级编程笔记04(基本概念)
Function类型 Es5中规范了另一个函数对象的属性:caller,这个属性中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,这它的值为null function outer() ...
- javascript高级编程笔记05(面向对象)
面向对象设计 es中有两种属性:数据属性和访问器属性 数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性 [[Configurable]]:表示能否通 ...
- javascript高级编程笔记06(面相对象2)
1) 构造函数模式 es中的构造函数可以用来创建特定类型的对象,像Object和Array这样的原生构造函数,在运行时会自动出现在执行环境中,此外,也可以创建自定义的构造函数,从而定义自定义对象类型 ...
- javascript高级编程笔记03(正则表达式)
引用类型 检测数组 注:我们实际开发中经常遇到要把数组转化成以逗号隔开,我以前都是join来实现,其实又更简单的方法可以用toString方法,它会自动用逗号隔开转换成字符串,其实toString内部 ...
- Android高级编程笔记(四)深入探讨Activity(转)
在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...
- JavaScript高级编程———JSON
JavaScript高级编程———JSON < script > /*JSON的语法可以表达一下三种类型的值 简单值:使用与javas相同的语法,可以在JSON中表达字符串.数值.布尔值和 ...
- JavaScript高级编程———基本包装类型String和单体内置对象Math
JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...
- JavaScript高级编程——Date类型
JavaScript高级编程——Date类型 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...
随机推荐
- 正则表达式 之 C#后台应用
正则表达式在.Net就是用字符串表示,这个字符串格式比较特殊,无论多么特殊,在C#语言看来都是普通的字符串,具体什么含义由Regex类内部进行语法分析. Regex 类 存在于 System.Text ...
- next nextval
1 KMP算法中next与nextval值的计算 以上两张图代表了next值的求法,本人总结后做如下叙述: 根据公式可知: next[1]=0 next[2]=1 next[3]的求法根据公式可以直接 ...
- opencv拼接相关1
这里面都是一些比较杂的东西,没什么实际意义.主要是为了,后面能跑一个程序: Stitcher: 抠细节: http://docs.opencv.org/2.4.2/modules/stitching/ ...
- CentOS 6.x安装gcc 4.8/4.9/5.2
1.gcc 4.8 cd /etc/yum.repos.d wget http://people.centos.org/tru/devtools-2/devtools-2.repo -gcc -bin ...
- Scala语言专题
Scala基础01:基础语法 Scala基础02:函数,懒值,异常 Scala基础03:数组 Scala基础04:类与对象 Scala基础05:包与引用 Scala基础06:继承 Scala基础07: ...
- 谈谈MSP430 的框架程序
最近在学习MSP430f149这块单片机,开始程序也没烧进去,弄了一天,发现串口不能下载,买了个jtag下载器,才搞定.现在也谈谈开始写程序的一些方法吧 程序重要的是框架,有这个基础之后才能行云流水的 ...
- ZooKeeper(3.4.5) - 使用 Curator(2.7.0) 监听事件
ZooKeeper原生的API支持通过注册Watcher来进行事件监听,但是Watcher通知是一次性的,因此开发过程中需要反复注册Watcher,比较繁琐.Curator引入了Cache来监听Zoo ...
- jquery扩展 $.fn
$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法,那么后面你的每一个 ...
- openvswitch安装和使用 --修订通用教程的一些错误
1.下载openvswitch源文件,注意版本要适合操作系统内核. 推荐openvswitch2.0及其以上版本. 2.开始安装openvswitch cd openvswitch sudo ./bo ...
- FFMPEG高级编程第一篇:环境搭建及编译
前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...