JavaScript基础知识从浅入深理解(一)
JavaScript的简介
javascript是一门动态弱类型的解释型编程语言,增强页面动态效果,实现页面与用户之间的实时动态的交互。
javascript是由三部分组成:ECMAScript、DOM、BOM
ECMAScript由ECMA-262定义,提供核心语言功能(ECMA是欧洲计算机制造商协会)
DOM(Document Object Model)文档对象模型,提供访问和操作网页内容的方法和接口
BOM(Browser Object Model)浏览器对象模型,提供与浏览器交互的方法和接口
1.使用JS的三种方式以及注释
//(1)直接在HTML标签中,直接使用时间属性,调用JS代码
<button onclick="alert('点我呀')">点我呀!</button> //(2)在页面的任意位置使用script标签插入JS代码。
<script type="text/javascript">
alert(123)
</script> //(3)引入外部JS文件。可以把脚本保存到外部文件中。外部文件通常包含被多个网页使用的代码。外部 JavaScript 文件的文件扩展名是 .js。
<script src="01.js" type="text/javascript"></script>
注意:
1.JS代码可以放在页面的任意位置使用,但是放置的位置不同,将影响JS执行的顺序。
2.引入外部JS文件的script标签,不能再包含任何的JS代码。
JS的注释
//单行注释 Ctrl+/
/* 多行注释 Ctrl+Shift+/ */
JS中的基础知识
1.JS中的变量:
(1)变量的声明: 使用var关键字声明.var num = 1;
(2)变量可以不声明也可以直接赋值: num = "哈哈哈哈";
(3)使用一行代码声明多个语句:var a=1,b=1,c。其中b为undefinde。
区别:使用var声明的变量属于局部变量,只在当前作用域有效(相当于局部变量),不用var声明的变量默认是全局变量,在整个JS文件可以用。
2.JS中变量声明的注意事项
(1)JS中声明变量的关键字只有var一个,变量的类型取决与赋值的类型。如果声明后未赋值,则为undefined类型。
(2)JS中同一个变量,可以在多次赋值中,被修改数据类型。var a=1; a="dddd"
(3)变量可以使用var声明,也可以直接赋值声明。(var声明的作用域为局部变量)
(4)在JS中一个变量可以多次使用var声明,后面的声明相当于直接赋值,没有任何卵用。
(5)JS变量区分大小写,大写和小写不是同一个变量。
3.JS中的数据类型
(1)undefinde:使用var声明但是没有赋值的变量。
(2)null : 表示空的引用。
(3)Boolean:真假
(4)Number:在JS中数值类型包括整形和浮点型。
(5)String:字符串
(6)Object:对象
4.常用数值函数
(1)isNaN:用于检测一个变量是不是非数值(Not a Number)。在检测时会先调用Number函数,尝试将变量转换成数值类型,如果最终结果能够转为数值,则不是NaN。
(2)Number函数:将各种数据类型转换成数值类型。
>>> Undefined:无法转换,返回NaN。
>>> null:转为0
>>> boolean:true转为1,false转为0
>>> String:如果字符串是纯数值字符串,则可以转换;如果字符串包含非数值字符,则不能转换,返回NaN。如果是空字符串转为0。
(3)parseInt():将字符串转换成数值类型。
>>> 如果是空字符串,不能转。""-->NaN
>>> 如果是纯数值类型字符串,可以进行转换,且小数点直接舍去不保留。"12.3"-->12
>>> 如果字符串包含非数值字符,则将非数值字符前边的整数进行转换。"123a"-->123 ; "a123"-->NaN
(4)parseFloat:转换机制与parseInt相同。
不同的是,转换数值字符串时,如果字符串为小数则可以保留小数点,整数型没有小数点。"123"-->123 "123.3"-->123.3
(5)typeOf():检测一个变量的数值类型
字符串-->String 数值-->Number true/false-->Boolean 未定义-->undefind 对象/null-->object 函数-->function
5.JS中常用的输入输出语句
(1)alert():弹窗输出
(2)prompt(a,b):弹窗输入。接收两个部分:a--提示内容;b--输入框的默认文本。(两部分都可以省略)。输入的内容默认都是字符串。
(3)document.write():在浏览器页面中打印输出。
(4)console.log():浏览器控制台打印。
6.JS中的运算符(与Java类似,这里就只讲述不同的地方)

与Java不同的:
(1)除号: 无论符号两边是整数还是小数,除完后都将按照实际结果保留小数。(22%10=2.2)
(2)===:绝对等于(数值和数据类型必须相同),而==至判断两边数据是否相同,并不关心两边的数据类型是否相同。
(3)& 和 | :只能进行按位运算,如果两边不是数值类型,将转换成数值后在运算。
(4)&& 和 ||:只能进行逻辑运算。
JS中的if
(1)boolean : true为真,false为假
(2)数值类型:0为假,非0为真
(3)字符串类型:空字符串为假,非空字符串为真
(4)null/undefined/NaN:全为假
(5)Object:对象全为真
JS中的swich:swicht(各种数据类型),比对时采用 === 进行判断,要求数据类型完全想等。
函数的声明与调用
1.JS中函数声明的格式
function 函数名(参数1,参数2,.....){
//函数体代码
return 返回值;
}
2.函数的调用:
(1)直接调用: 函数名(参数1,参数2,.....)
(2)通过事件调用:在HTML标签中,通过事件属性进行调用。
注意事项:
(1)函数中有没有返回值,只取决于函数有没有return,无需可以声明。在JS中,有返回值可以不接收;没有返回值,也可以接收,结果为Undefined。
(2)JS中函数的形参列表与实参列表没有任何关联,也就是说有参数可以不赋值,没有参数也可以赋值。未赋值的参数是undefined。函数的实际参数列表取决于实参列表。
(3)JS中函数是变量的唯一作用域。(除了函数,其他方式都没有作用域,也就是都是全局变量)。函数的形参属于局部变量。
(4)函数的声明与调用语句没有先后之分,即,可以先写调用语句,在声明函数。
3.自执行函数
(1)!function(){}();//开头使用!表明这是自执行函数。
(2)(function(){}())//用()将匿名函数声明与调用包裹。
(3)(function(){})()//用()将匿名函数声明语句进行包
注意:函数的调用语句必须放在声明语句之后。
[JS代码的执行顺序]
JS的代码执行分为两个阶段:检查编译阶段和代码执行阶段。
检查编译阶段:主要检查语法错误, 进行变量的声明、函数的声明等声明操作。
代码执行阶段:变量的赋值、函数的调用等执行语句,属于代码执行阶段。
4.arguments对象
1、作用:用于保存函数的所有实参。
>>>当函数存在实参时,可以使用数组下标访问函数的所有实参。alert(arguments[6])
2、arguments中的元素的个数取决于实参列表,与形参个数无关。
3、一旦函数调用时,传入了实参,那么对应位数的形参,将于arguments对应的元素进行绑定,修改形参,arguments中对应的元素将被改掉,反之也成立。但是,如果某一位置没有传入形参,则形参和arguments将不进行关联。
arguments.callee(): 指向当前函数的引用,用于在函数中使用递归调用自身。
JavaScript基础知识从浅入深理解(一)的更多相关文章
- 从浅入深——理解JSONP的实现原理
由于浏览器的安全性限制,不允许AJAX访问 协议不同.域名不同.端口号不同的 数据接口,浏览器认为这种访问不安全: 可以通过动态创建script标签的形式,把script标签的src属性,指向数据接口 ...
- 浅入深出Vue:前言
浅入深出Vue系列文章 之前大部分是在做后端,后来出于某些原因开始接触Vue.深感前端变化之大,各种工具.框架令人眼花缭乱.不过正是这些变化,让前端开发更灵活. 博主在刚开始时,参考官网的各个步骤以及 ...
- 浅入深出之Java集合框架(下)
Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...
- 『浅入深出』MySQL 中事务的实现
在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇文章中,我们将对事务的实现进行分析,尝 ...
- 浅入深出Vue:代码整洁之封装
深入浅出vue系列文章已经更新过半了,在入门篇中我们实践了一个小小的项目. <代码整洁之道>一书中提到过一句话: 神在细节中 这句话来自20世纪中期注明现代建筑大师 路德维希·密斯·范·德 ...
- 学习javascript基础知识系列第三节 - ()()用法
总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...
- 浅入深出之Java集合框架(上)
Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出之Java集合框架(中)
Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...
- 浅入深出Vue:工具准备之PostMan安装配置及Mock服务配置
浅入深出Vue之工具准备(二):PostMan安装配置 由于家中有事,文章没顾得上.在此说声抱歉,这是工具准备的最后一章. 接下来就是开始环境搭建了~尽情期待 工欲善其事必先利其器,让我们先做好准备工 ...
随机推荐
- linux下git常用命令
1 安装: sudo apt-get install git 2 创建一个版本库: 新建一个文件夹,进入这个目录之后 git init 3 创建一个版本: git add 文件名或目录 #表示将当前文 ...
- 通过wget工具下载指定文件中的URLs对应的资源并保存到指定的本地目录中去并进行文件完整性与可靠性校验
创建URLs文件在终端输入cd target_directory回车,便把当前文件夹切换到了目标文件夹target_directory,此后创建的文件都会丢它里面在终端输入cat > URLs回 ...
- vue2.0项目引入element-ui
在项目中,为了方便我们工作和开发效率,常常引入一些框架来帮助我们完成高效的工作,今天我们就用vue来搭建一下框架,并且引入element-ui这个框架.安装流程也是我从失败中摸索到的,希望能帮助大家. ...
- *args和**kwargs
#coding=utf8 __author__ = 'Administrator' # 当函数的参数不确定时,可以使用*args和**kwargs.*args没有key值,**kwargs有key值 ...
- 南阳OJ-6-喷水装置(一)
题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=6 题目大意: 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷 ...
- 笔记本电脑连wifi然后通过有线网口做桥接
让你的笔记本电脑作为主机,台式机通过通过一根网线连接到你的笔记本,共享无线网络上网,可以进行如下操作: 1,先找跟网线将两台电脑连接. 2,打开win7自带的windows防火墙,此步在控制面板里可以 ...
- 输出一个对象,会默认执行toString()方法
今天在看编程思想时看到enum知识点时发现了这个小问题(可能我基础太差了) 如图 然后就一步一步的跟进源码发现了其中的奥秘,首先进入println()方法如下图 看图执行了valueOf()方法进行s ...
- 深入理解Redux
前面的话 Redux是Flux思想的另一种实现方式.Flux是和React同时面世的.React用来替代jQuery,Flux用来替换Backbone.js等MVC框架.在MVC的世界里,React相 ...
- 使用REST风格完成MVC前后端分离
一个具有REST风格项目的基本特征: 具有统一响应结构 前后台数据流转机制(HTTP消息与Java对象的互相转化机制) 统一的异常处理机制 参数验证机制 Cors跨域请求机制 鉴权机制 一:统一响应结 ...
- [C#]设计模式-单例模式-创建型模式
单例模式用于在整个软件系统当中保持唯一实例,在 C# 当中最能够体现此概念的就是静态类,静态类的生命周期是跟随整个程序,并且在整个程序中仅保有一个实例. 不过在这里我们不再详细阐述单例模式与静态类有什 ...