JavaScript基础语法

JS
JavaScript 基于对象和事件驱动,并且有安全性的客户端脚本语言.

组成
ECMAScript 基础语法
DOM 文档对象模型
BOM浏览器对象模型

使用方式
JS需要和HTML一起使用才有效果,我们可以通过直接或间接的方式将JS代码嵌入在HTML页面中。

行内JS 写在标签内部的 js代码
内部js 定义在script标签内部的js代码
外部js 单独的js文件,在HTML中通过script标签引入
我们可以将JavaScript代码放在html文件中任何位置,但是我们一般放在网页的head或者body部分。由于页面的加载方式是从上往下依次加载的,而这个对我们放置的js代码运行是有影响的。
放在部分,最常用的方式是在页面中head部分放置

变量

JavaScript是一种弱类型语言,在声明变量时不需要指明数据类型,直接用var修饰符进行声明。

若只声明而没有赋值,则该变量的值为undefined。
定义才可以使用,可以在同一条var 声明多个变量

重新声明一个已经存在的变量且赋值,则会覆盖掉前面的值
没有限制 可以赋予各种类型的值。
变量的作用域提升
变量提升只对 var 命令声明的变量有效,如果一个变量不是用 var 命令声明的,就不会发生。
全局变量 spript 标签对作用域
局部变量 function 内部就是局部
函数内部不使用var声明的变量为全局变量,函数调用后才能存在

数据类型
JS是弱类型语言,变量没有类型,但数据本身是有类型的。针对不同的类型,我们可以进行不同的操作。
JavaScript 中有6 种数据类型,其中有五种简单的数据类型:undefined、Null、布尔、数值和字符串。一种复杂数据类型Object。
数 值(Number): 整数和小数(比如 1 和 3.14)
字符串(String): 字符组成的文本(比如"Hello World")
布尔值(Boolean):true(真)和 false(假)两个特定值
undefined: 表示“未定义”或不存在,即此处目前没有任何值
Null: 表示空缺,即此处应该有一个值,但目前为空
对象(object)(引用) : 各种值组成的集合
a. 对象(object){name:”zhangsan”,age:”18”}
b. 数组(array)[1,2,3]
c. 函数(function)function test() {}

typeof操作符
typeof操作符是用来检测数据类型。对于值或变量使用typeof操作符会返回如下字符串
字符串 描述
undefined 未定义
boolean 布尔值
string 字符串
number 数值
object 对象或null
function 函数
说明:
a. typeof null返回的是object字符串
b. 函数不是数据类型,但是也可以使用typeof操作符返回字符串
typeof操作符可以操作变量也可以操作字面量。
注意:函数在JavaScript中是对象,不是数据类型,所以使用typeof区分function和object是有必要的

数据类型转换
对象类型不参与数据类型转换
自动转换
强制转换
parseInt()在转换之前,首先会分析该字符串,判断位置为0处的字符,判断它是否是个有效数字,如果不是,则直接返回NaN,不再继续,如果是则继续,直到找到非字符
parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由 parseInt()方法的第二个参数指定的
parseFloat()方法与 parseInt()方法的处理方式相似,从位置 0 开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字。不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的,parseFloat()方法会把这个小数点之前的字符串转换成数字。
几乎每个数对象都提供了toString()函数将内容转换为字符串形式,其中Number提供的toString()函数可以将数字以指定的进制转换为字符串,默认为十进制。
Number还提供了toFixed()函数将根据小数点后指定位数将数字转为字符串,四舍五入
转换为字符串的方式,直接在任意数据后面 + ''或""即可。

运算符
算数运算符
运算符 描述 例子y=5 结果

加 x=y+2 x=7
减 x=y-2 x=3
乘 x=y2 x=10
/ 除 x=y/2 x=2.5
% 求余数 x=y%2 x=1
++ 自增(前导加、后导加) x=++y x=6
– 自减(前导减、后导减) x=–y x=4
赋值和拓展运算符
运算符 例子x=10, y=5 等价于 结果
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
= x=y x=x
y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0

比较运算符
运算符 描述 例子x=5
== 等于 x8 为 false
=== 全等(值和类型) x=5 为 true;x===“5” 为 false
!= 不等于 x!=8 为 true

大于 x>8 为 false
< 小于 x<8 为 true
= 大于或等于 x>=8 为 false
<= 小于或等于 x<=8 为 true

逻辑运算符
运算符 描述 例子x=5, y=2
&& and (x < 10 && y > 1) 为 true
|| or (x5 || y5) 为 false
! not !(x==y) 为 true

三目运算符
?: 如果…否则…


JavaScript 使用大括号,将多个相关的语句组合在一起,称为”区块”
控制语句
流程控制语句一共有三种:
a. 流程执行: 从上到下,从左到右
b. 选择执行: 分支选择
c. 循环执行: 重复执行
if (条件表达式) {
语句体;
}

if (条件表达式) {
语句体1;
} else {
语句体2;
}

switch (值|运算表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;

default:
语句体n+1;
break;
}

基本格式
while (判断条件语句) {
循环体语句;
控制条件语句;
}

扩展格式
初始化语句;
while (判断条件语句) {
循环体语句;
控制条件语句; // 少了它很容易形成死循环
}

基本格式
do {
循环体语句;
} while (判断条件语句);

扩展格式:
初始化语句;
do {
循环体语句;
控制条件语句;
} while (判断条件语句);

数组
数组(array)是按次序排列的一组数据,每个值的位置都有编号(从 0 开始),整个数组用方括号表示

[数据,数据…]
New array() 空数组
New array(值1,值2…)

数组的长度可以通过length属性来获取,并可以任意更改
获取:数组名.length
更改:数组名.length = 新长度
数组中的每一个元素都可以被访问和修改,甚至是不存在的元素,无所谓越界
获取:数组名[下标]
更改:数组名[下标] = 新值

数组的遍历
普通for循环遍历
for (var i = 0; i < 数组.length; i++) {
数组名[i]是获取元素}

for in
for (var 下标(名称任意) in 数组名) {
数组名[下标]是获取元素}

Foreach

数组名.forEach(function(element, index){
数组名[下标]是获取元素}

Splice 截取(开始参数,截取几个)

函数
函数声明语句、函数定义表达式、Function构造函数

函数声明语句
function 函数名([参数列表]){}

函数表达方式
以表达式方式定义的函数,函数的名称是可以不需要的
var 变量名 = function ([参数列表]) {}
变量名()

Function构造函数接收任意数量的参数,但最后一个参数始终都被看成是函数体,而前面的参数则列举出了新函数的参数
js中同名的函数,后面的函数会覆盖前面同名的函数。
js中函数允许有不定数目的参数,后面介绍arguments对象。
JavaScript 引擎将函数名视同变量名,所以采用 function 命令声明函数时,整个函数会像变量声明一样,被提升到代码头部

函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数,定义时的参数称为形参,调用时的参数称为实参。
a.实参可以省略,那么对应形参为undefined
b.若函数形参同名(一般不会这么干),在使用时以最后一个值为准。
c.可以给参数默认值:当参数为特殊值时,可以赋予默认值。
参数为值传递,传递副本;引用传递时传递地址,操作的是同一个对象

常用调用方式:函数名([实参]);
存在返回值可以变量接收,若接收无返回值函数则为undefined。

javascript中函数也是对象,函数对象也可以包含方法。call()和apply()方法可以用来间接地调用函数。任何函数可以作为任何对象的方法来调用,哪怕这个函数不是那个对象的方法。两个方法都可以指定调用的实参。call()方法使用它自有的实参列表作为函数的实参,apply()方法则要求以数组的形式传入参数。

匿名函数:function ([参数]){}
调用:(function ([形参]) {})([实参]);
函数本身是对象,也有一些属性和方法
函数名.name 函数名称
函数名.length 形参的个数
函数名.toString() 返回函数的源码
函数作用域:全局(global variable)和局部(local variable)
函数自己调用自身。函数头:尽头 函数体:重复执行
a. 自己调用自己
window对象
全局对象 window对象 如果定义全局变量相当于window对象的属性,全局函数相当于window的函数

This
js中的this上下文对象,在运行期间动态绑定对象,java是在编译器绑定对象
this决策树
1.this所在的函数是否是通过new使用,指代new的对象
2.是否是通过对象调用的函数,函数中的this指带调用函数的对象
3.this默认指代window对象

通过call|apply调用函数,决定函数内部this指代的对象,可以穿参数
函数.call(obj2,参数1,参数2…)
函数.apply(obj2,[参数1,参数2…])

Js 对象
js的对象满足json格式的对象
json一种与任何语言都无关的一种特殊的轻量级语言格式
数据都满足键值对形式 key都是"“定义的字符串,如果值也为字符串也是”"定义的

        key:value
        key默认是字符串,'',""
        key可以直接定义标准格式的名字,可以不加"",非标准格式必须加""
        key可以使用关键字 var

        value可以是任意类型的

        使用对象中的属性:
            1) 对象.属性名
            2) 对象['属性']

序列化对象,将对象转为字符串
JSON.stringify(object);

 反序列化,将一个Json字符串转换为对象
 JSON.parse(jsonStr);

eval(str) 把参数当做js的语句来执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值