当前位置: 首页 > news >正文

javascript基础总结

一、语法

------------------------------

  • javascript中的一切(变量、函数名和操作符)都区分大小写。

  • 标识符:就是指变量、函数、属性的名字,标识符要求如下

    1 第一个字符必须是一个字母、下划线(_)或一个美元符号($)

    2 其他字符可以是字母、下划线、美元符号或数字

    3 不能把关键字、保留字、true、false、null用作标识符

  • 注释

 

// 单行注释

/*

*

* 多行注释

*

*/

 

严格模式

严格模式是ES5引入的,严格模式定义一种不同的解析和执行模式,在严格模式下,对某些不安全的操作会跑出错误

 

// 在整个脚本中启用严格模式,可以在顶部添加如下代码

 

"use strict"

 

// 也可以指定函数在严格模式下执行

 

function doSomething(){

"use strict"

// ....

}

 

二、变量和数据类型

------------------------------

变量

1、ESCMscript中的变量是松散类型的,即JavaScript使弱类型语言,换句话说js中的变量仅仅是一个保存值得占位符而已,可以保存任何类型的值。

2、定义变量用 var 操作符。

3、使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。

4、在函数作用域(块作用域)中可以通过省略var定义全局变量(不推荐)。

 

数据类型

1、js中有5中基本数据类型和1中复杂数据类型他们分别是

  • Undefined、Null、Boolean、Number、String和Object

2、typeof操作符用来检测变量的数据类型,对一个值使用typeof操作符会返回字一个 字符串 ,标示着该值得类型:

  • “undefined” —- 如果这个值未定义

  • “boolean” —- 如果这个值是布尔值

  • “string” —- 如果这个值是字符串

  • “number” —- 如果这个值是数值

  • “object” —- 如果这个值是对象或null

  • “function” —- 如果这个值是函数

3、js的6中数据类型与使用typeof判断出来的数据类型并不对应,区别就在于使用typeof得到的类型标示中没有”null”,而是多了一个”function”,其他的都是一样的,还要注意的就是对null是用typeof时会返回”object”,并且typeof操作符得到的是字符串。

 

三、语句

------------------------------

if语句

语法:

if(条件){

 

}else if(条件){

 

}else{

 

}

 

解释:

其中,条件可以是任意表达式,而且对这个表达式的求值结果不一定非得是Boolean值,ES会自动调用Boolean()转换函数将这个表达式的结果转换成一个布尔值。

 

while语句

语法:

while(条件){

something...

}

 

解释:

其中条件同if语句中的条件,while语句是前测试循环语句,即在执行循环体之前就要对条件表达式求值,所以循环体有可能永远不会执行。

 

do-while语句

语法:

do{

something...

}while(条件)

 

解释:

其中条件同if语句中的条件,do-while语句是后测试循环语句,即在对条件表达式求值之前,循环体中的代码至少被执行一次。有趣的记法就是(while是先问再揍,do-while是揍完再问)。

 

for语句

语法:

for(初始化代码, 条件, 执行循环体后要执行的代码){

something...

}

 

解释:

for语句也是一种前测试循环语句,所以循环体也有可能永远不会执行,for语句和while语句的区别就是,在执行循环之前初始化变量和定义循环后要执行的代码的能力。

 

for-in语句

语法:

for(property in expression){

something...

}

 

解释:

for-in语句是一种精准的迭代语句,用来枚举对象的属性,需要注意的是,for-in语句输出的属性名的顺序是不可测的,因浏览器而异。

 

switch语句

语法:

switch(表达式){

case value :

statement

break;

case value :

statement

break;

case value :

statement

break;

default : 

statement

}

 

解释:

switch语句是与if语句最密切的流程控制语句,JavaScript中的switch语句有很多自己的特色,首先:可以在switch语句中使用任何数据类型,其次:每个case的值(即value),不仅仅只能是常量,也可以是变量甚至表达式。

 

label语句

语法:

label : statement

 

// 实例

 

start : for(var i = 0; i < count; i++){

alert(i)

}

 

解释:

使用label语句可以在代码中添加标签,以便将来使用,上面例子中的start标签可以在将来由break或continue语句引用,使代码跳至标签开始出执行,一般label语句都要与for语句等循环语句中的break或continue配合只用。

 

break和continue语句

语法:

// 例子

 

mylabel :

for(var i = 0; i < 10; i++){

for(var j = 0; j < 10; j++){

if(i == 5 && j == 5){

break mylabel;

// continue mylabel;

}

}

}

 

解释:

break和continue语句都是用来跳出循环的语句,不同之处在于break语句会强制执行后面的语句,而continue语句只是跳出本次循环继续执行下次循环。上面的例子中,结合使用break语句和label语句,控制代码的执行。

 

with语句

解释:

with语句的作用是将代码的作用域设置到特定的对象中。严格模式下使用with语句会报错。定义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;

}

 

四、函数

------------------------------

JavaScript中的函数使用function关键字来声明

function(arg0, arg1, arg2, ..., argn){

statements

}

 

理解参数

JavaScript中的参数有一下特点:

  1. 不介意你传递几个参数,即使你在定义函数时规定了接收几个参数,它都不会报错。

  2. 不在乎你传递的参数是什么数据类型。

 

之所以会这样,是因为JavaScript函数内部的参数使用一个类数组对象来表示的,所以函数接收到的始终都是这个类数组对象,而不关心这个对象里面有什么参数,在函数体内可以是用arguments对象来访问这个类数组对象,可以使用方括号的语法如:arguments[0]、arguments[1]等,这个事实说明一个重要的特点:

  • 命名参数并不是必须的,它只是提供了便利而已。

  • 通过arguments的length属性获知有多少个参数传递给了函数:

function howManyArgs(){

alert(arguments.length);

}

 

howManyArgs("string", 1); // 2

howManyArgs();  // 0

howManyArgs(1);  // 1

 

关于arguments有一点比较有意思,就是它的值永远与对应的形式参数同步,即修改了arguments[0]的值会使对应的命名参数的值也发生相应的改变。但是这并不是说他们访问的是相同的内存空间,他们有独立的存储空间,只不过值会同步而已,另外如果值传递一个参数,修改arguments[1]的值是不会改变对应的命名参数的值的,这是应为,arguments.length的长度是由传递参数个数决定的,而不是命名参数的个数决定的,在这里再次强调一次, 命名参数只是提供了便利而已,没有任何其他作用 。

 

没有重载

由于JavaScript中的函数没有函数签名的特征,所以没有重载,不过可以通过检查传入函数的参数的类型和数量作出不同的反应来模拟重载。

 

转载于:https://www.cnblogs.com/gxbk629/p/5599318.html

相关文章:

  • 组策略应用——限制计算机接入
  • 创建swap
  • JavaScript语法详解(一)
  • 二分搜索法 Arrays.binarySearch遇到返回-1的问题
  • gitlab gerrit jenkins CI/CD环境集成
  • 开发者和程序员需要关注的42个播客
  • C库数学函数
  • 关于QT下资源使用和资源占用…
  • ASP.Net MVC开发基础学习笔记(1):走向MVC模式
  • 使用JDBC处理LOB大型对象
  • ASP.NET MVC生命周期介绍(转)
  • Orace expdp filesize compression
  • Java集合源码分析(一)
  • 如何设置android studio让程序运行在真机中
  • qcharts编译
  • [Vue CLI 3] 配置解析之 css.extract
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • chrome扩展demo1-小时钟
  • docker-consul
  • Redux系列x:源码分析
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 力扣(LeetCode)21
  • 利用DataURL技术在网页上显示图片
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端临床手札——文件上传
  • 算法之不定期更新(一)(2018-04-12)
  • 运行时添加log4j2的appender
  • - 转 Ext2.0 form使用实例
  • Java总结 - String - 这篇请使劲喷我
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • #Linux(Source Insight安装及工程建立)
  • #图像处理
  • (4)STL算法之比较
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (四)Linux Shell编程——输入输出重定向
  • (算法)N皇后问题
  • (推荐)叮当——中文语音对话机器人
  • (一)认识微服务
  • (转)VC++中ondraw在什么时候调用的
  • (转)原始图像数据和PDF中的图像数据
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET学习教程二——.net基础定义+VS常用设置
  • .Net组件程序设计之线程、并发管理(一)
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节
  • @Transactional 竟也能解决分布式事务?
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)
  • [2016.7 test.5] T1
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]