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,这就是在某些旧版本的浏览器中拼接字符串速度很慢的原因.但这些浏览器后来版本解决了这个问题.

转换为字符串:

  1. 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()返回对象字符串,数值或布尔值表示

 

操作符:

  1. 一元操作符:

一元操作符比较简单,只记录比较容易忽略的点

逻辑或:如果第一个操作数是对象,则返回第一个操作数

      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语句.

  1. 函数:

函数的参数与大多数其他语言中的参数有所不同,es函数不介意传递进来的多少参数,es中的参数在内部是用一个数组来表示的,函数接收到的始终都是这个数组,而不关心数组中包含哪些参数,在函数体内通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数.

其实,arguments对象只是与数组类似,

严格模式对如何使用arguments对象做出了一些限制:

  • 赋值会变得无效
  • 重写arguments的值会导致语法错误
  • 没有重载

2、变量,作用域和内存问题

  1. 基本类型和引用类型

注意:在很多语言中,字符串以对象的形式表示,因此被认为是引用类型的,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

 

  1. 执行环境:

执行环境是javascript中最为重要的一个概念,执行环境定义了变量或函数有权访问的其他数据,每个执行环境都有一个与之关联的变量对象,环境中第一的所有变量和函数都保存在这个对象中.

全局执行环境是最外围的一个执行环境,在web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的,某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁.(全局执行环境直到应用程序退出时才会被销毁)

每个函数都有自己的执行环境,当执行流进入一个函数时,函数的环境就会被推入一个环境栈中,而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境.

当代码在一个环境中执行时,会创建变量对象的一个作用域链,作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问,作用域链的前端,始终都是当前执行的代码所在环境的变量对象,如果这个环境是函数,则将气活动对象作为变量对象,活动对象在最开始时值包含一个变量,即argument对象,作用域链中的下一个变量对象来自包含环境,而在下一个变量对象则来自下一个包含环境,这样,一直延续到全局执行环境,全局执行环境的变量对象始终都是作用域链的最后一个对象.

 

有交流js各种框架的朋友可以加群252259003,可以讨论现在前端各种js框架,群主也会经常分享比较好的前端的技术文章地址.

转载于:https://www.cnblogs.com/hetaojs/p/5916158.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值