《js入门1-核心js》

一、js的由来

全称:javascript
与java没关系
javascript是一个编程语言,允许用户在浏览器页面上完成复杂的事情。浏览器页面并不总是静态的,往往显示一些需要动态更新的内容,交互式地图,动画,以及视频等。
最初的目的:
本地表单验证
用来增加用户体验好感度
减少用户端等待时间
减少服务器端压力

二、组成

一个完整的JavaScript包括核心(ECMAScript),应用程序编程接口即API(比如DOM,BOM),以及其他第三方API。JavaScript与HTML、CSS一同配合共同完成一个复杂页面的显示。
核心js:ECMAScript5(linux)
dom:文档对象模型
bom:浏览器对象模型
兼容性:核心js兼容性最好
dom和bom兼容性相对较差

三、特点

1、弱类型语言

Java:强类型语言
int a=10;
a=“hello”;//报错
js:
var a=10;
a=‘hello’;
concole.log(a);//hello

2、脚本语言

本身具有逻辑能力和行为能力

3、解释型语言

需要被js的解析器解析执行
浏览器:
内置js解析器
node:
js运行环境
封装了js解析器(谷歌 v8)
检测node
node–version:检测node版本号
1》repl环境
r:read
e:eval
p:print
l:loop
2>node命令
node a.js

4、从上到下依次执行(按照解析顺序执行)

代码顺序:
say();
function say(){
}
解析顺序:
function say(){}
say()
执行:
function say(){}
say()
优先解析函数声明,然后解析使用var操作符声明的变量

5、大小写敏感

(html大小写不敏感,css大小写敏感)

四、语法

1、变量的声明

a>变量的命名规则
1、由字母、数字、下划线以及$组成
2、不能由数字开头
3、建议使用驼峰式命名
从第二个单词开始首字母大写
4、不能使用关键字和保留字
关键字:在js中具有特殊意义的字符
保留字:未来有可能成为关键字的字符
b>变量的声明
var a;//声明一个a变量但不赋值
a=“hello”;//获取a变量,赋值
var a=“hello”;//声明的时候赋值
c=“hello”;//直接赋值
var a=2,b=3,c=4;//同时声明多个变量
es6:
let:
使用了let声明的变量只能声明一次
使用let声明的变量,不能进行变量提升
局部变量

const:
一般用来声明常量,一旦声明,不得修改
使用了let声明的常量只能声明一次
不能进行变量提升
局部变量
如果常量值为引用数据类型,只要引用地址不变,可以修改内部属性

2、注释

//:单行注释
//注释内容
/**/:多行注释
/注释内容/

3、语句

每一行语句结束,使用分号结尾

五、使用

1、直接嵌入在html标签内部
script标签
2、外部引入脚本
script脚本(src)
3、node
1>创建一个js文件,以js为文件后缀名
2>执行node test.js

六、全局变量和局部变量

1、什么是全局变量和局部变量?
2、如何声明?
局部:
使用let声明的变量
const声明的变量
使用var操作符并声明在函数内部

全局:
第一种声明方式:使用var关键字+变量名在函数外部声明就是全局变量
第二种声明方式:没有使用var关键字声明,直接给变量名赋值,不管是在函数内部还是外部都是全局变量

七、js中的数据类型

共有6种数据类型
typeof(a)
typeof a
返回值:
undefined
object(null,object)
number
boolean
function
string
返回值类型

其中五种数据类型(简单数据类型)

undefined:未定义类型

var a;
var a=undefined;
console.log(a);

null:空引用数据类型
即指向堆区,但是此时没有指向
undefined派生自null

null==undefined:true

null===undefined:false

number:数值类型
10
10.3
011
0xa
NaN:not a number
infinity:无穷数
10/0
isNaN(a):
false:a是一个数
true:a不是一个数
isFinity(a):
false:是无穷数
true:不是无穷数

boolean:布尔型

true
false

string:字符串类型
使用单引号或双引号包裹的字符

字符串拼接
``
‘’
“”

json字符串

1种引用数据类型
object:
function:
array:
var arr=new Array();
arr.valueOf();
date

共有的属性和方法:
construtor:构造者
toString():将当前变量转换为字符串类型
function say() {} ->function(){}
[ 1, 2, 3, 4 ] - >[1,2,3,4]

valueOf():返回变量的原始值

八、数据类型转换

null和undefined不参与转换
1、Number:
*->number
1>Number转换函数
Number(a):
null:0
undefined:NaN
true:1
false:0
“”:0
“hello”:NaN
“10”:10
“+10”:10
“10.3”:10.3
“a10”:NaN
parseInt(a):
null:NaN
undefined:NaN
true:NaN
false:NaN
“”:NaN
“hello”:NaN
“10”:10
“+10”:10
“10.3”:10
“a10”:NaN
“10a”:10
parseFloat(a):
“10.3”:10.3
var a=null;
console.log(a);
console.log(typeof a);
console.log(paeseFloat(a));
console.log(parseFloat(a));
2、Boolbean:
*->boolbean
Boolbean:
null:false
undefined:false
0:false
非0:true
“”:false
“hello”:true
String:
*->string
1、String(a)
null:“null”
undefined:“undefined”
false:“false”
直接在变量值之外添加双引号或者单引号
2、toString(num):
null和undefined没有toString()
num:进制数
a.toString(2)
true.toString():“true”
10.toString():“10”

九、值传递问题

基本数据类型在进行值传递的时候,传递的是值
引用数据类型在传递的时候,传递的是引用地址

十、操作符

1、算数操作符:

**= :*赋值操作符 从右向左赋值
var a=10;
+ +=
- -=
** * =

/ /=
+:
a+b:
1、如果两个变量均为number类型,直接相加
2、如果两个变量均为非number类型,并且均不为string类型,也不为object类型
null undefined boolean
直接转换为number类型进行相加(Number())
3、如果其中一个值为string类型,另一个不为object类型,(null,undefined,string,boolean),直接进行字符串拼接
4、如果其中一个值为object类型,
另一个值不为string类型:
10+{} ->10[object Object]
默认调用{}的toString()
另一个值为string类型:
“10”+{} =10[object Object]
如果只重写了toString():
调用toString()
如果只重写了valueof()
调用valueof
如果既重写了toString()又valueof():
valueof()

2、比较操作符(返回值为boolean)

> :
a>b:
num和num比较:->直接比较
非number和num比较:将非number转换为number进行比较
非number和非number比较:转换为number
string和string比较:比较字符编码
number和object比较
默认情况下调用toString()
如果只重写了toString():调用toString()
如果只重写了valueof()调用valueof
如果既重写了toString()又valueof():valueof()
<
>=
<=
==:
undefined==undefined:true

			null==null:true
			
			undefined==null:true
			
			NaN==NaN:false
			
			先进行数值类型转换,再进行比较
			“10”==10:true

===
全等操作符
先进行数值类型的比较,数据类型相同,再比较值
如果数据类型不同,直接返回false
null===undefined:false

“10”===10:false

obj===obj:比较引用地址

3、逻辑操作符

1、&&:逻辑与

a&&b
转为boolean的结论:同真才真,有假则假
1、如果第一个数为false,“”,null、undfined、NaN能够转换为false的值,则返回第一个数
2、如果第一个数不返回,则返回第二个数

遇到假的就返回

2、 ||逻辑或

结论:有真则真,同假才假
1、如果有第一个数为null/undefined/false/""/NaN->返回第二个数
2、如果第一个数不为上述值,返回第一个数

遇到真的才返回

3、逻辑非

!null
1、将null转换为boolean
Boolean()
2、取反
结果一定为boolean类型
对一个变量,连用两次逻辑非,相当于当前变量转换为boolean类型
!!null:false

4、三目运算符

a>b?console.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值