js的语法规则
1、分号是语句结束的标志,分号不是必须的,我们不建议这样做,严格来说,语句要加上分号。
2、 js会忽略多个空格和换行。
3、字符集
**utf-8:**统一国际编码,兼容各个国家的语言
gb2312/gbk:简体中文编码
big5:繁体中文编码
4、变量区分大小写
5、注释
回顾一下html注释:
回顾一下css的注释:
/*内容*/
js的注释语句
单行注释://内容
多行注释:/*内容*/
问:为什么要加注释?
答:为了方便别人也是为了方便自己。
Javascript名词解释
**在编程语言中,一般固定值称为字面量,如 3.14。**给变量赋值时,等号右边都可以认为是字面量。英语叫做literals,有些书上叫做直接量。
数字字面量
25,98.23
var num = 92;
字符串字面量
‘123’,“Hello”
[12,2,3]
常量
什么是常量?
常量:就是其值不能改变的。
怎样定义一个常量?
const HOST = “localhost”;
const也是块级作用域
const声明的常量必须初识化,而let声明的变量不用
const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了
Javascript变量命名规则(重点)
声明变量
变量是干什么的,是存储数据的,那存储什么种类数据呢?
声明变量使用关键字:var(variable)
你给它赋什么类型的值,那么这个变量就是什么数据类型。
内存中堆区和栈区
单独声明
多个变量声明,中间用逗号隔开
重复声明
遗漏声明
显式声明与隐式声明区别
JS中变量声明分显式声明和隐式声明。
var name = 'muzidigbig';//显式声明
name = 'muzidigbig';//隐式声明(为全局对象(window)的一个属性)
JavaScript 严格模式(use strict)
变量提升
变量一定要先声明后使用,如果先使用后声明,js的内部机制自然使变量提升。
let 和var 的区别
var: variable,它是可变的。
let: 块作用域。
变量名的命名规则
变量的命名:变量是由字母、数字、下划线、$
组成,但第一个字符必须是字母或者是下划线、$
开头。
$
不建议使用,它可能会和其他的框架语法冲突,或者是函数的名字冲突
1、JavaScript语言的标识符对大小写敏感,所以a和A是两个不同的标识符。
2、首字母可以是任意字母以及美元符号和下划线。剩余可以是任意字母,美元符号,下划线和数字
3、不能使用javascript中的关键字(保留字)来命名变量
4、中文也可以声明变量,不建议使用它。
!
变量的命名方式
第一种命名:帕斯卡命名(大驼峰式命名)
每个单词的首字符大写。
例如:UserName。
第二种命名:小驼峰式命名
首个单词的首字母小写,其他后面单词的首字母大写。
例如:
例如:userName
第三种命名:匈牙利式命名
数据类型+单词(变量名)
Integer+age
var Iage = 25;
String+address
var Saddress = “西安”;
Javascript数据类型(重点)
数据类型分类:
!
在此基本的数据类型的基础上又增加了一个基本数据类型:Symbol,Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。
打印变量的数据类型:typeof
请注意:
NaN 的数据类型是 number
数组(Array)的数据类型是 object
日期(Date)的数据类型为 object
null 的数据类型是 object
未定义变量的数据类型为 undefined
基本数据类型
数字类型(number)
c 语言中:
int(整数),float(单精度浮点型),double(双精度浮点型),char(字符)
string(字符串)。
二进制(binary):0b101010101
八进制:0o2535
十六进制:0x69852
进制转换:
toString():十进制转换其他的进制
parseInt():其他的进制转换十进制
!
最大值:MAX_VALUE
最小值:MIN_VALUE
浮点数不能比较
NaN:Not a Number:不是一个数值
一些特殊情况(除数为0,最大值变化)
布尔类型(boolean)
true(真),false(假),都是小写的。
TRUE,FALSE,True,False:这些都不正确。
字符串类型(string)
字符串:加单引号或者是双引号
字符串连接:使用的是+
模板字符串:
undefined
typeof undefined
null
typeof null
null == undefined
null和undefined的区别
1、类型不相等
2、强制类型转换值不一样
var re1 = Number(undefined);//NaN
var re2 = Number(null);//0
3、比较
null == undefined;//true
null === undefined;//false
引用类型(object)
Javascript运算符(重点)
算术运算符
+,-,*,/,%(求余数),++,–,**(求幂数-es7新增)
实例练习:
一元运算符
+(正),-(负数),++,–
两数交换
比较(关系)运算符
>,<,>=,<=,!=,!(不全等),,===(全等:值和类型都相等)
逻辑运算符
1、&&:逻辑与,所有运算操作数都为真,运算结果才为真
true && true;//true
false && true;//false
true && false;//false
false && false;//false
总结说明:
如果前面的表达式是true,就取后面的值,如果前面的表达式为false,就取前面的值。
2、||:逻辑或,只要运算操作数其中一个为真结果就为真。
true || true;//true
false || true;//true
true || false;//true
false || false;//false
总结说明:
如果前面的表达式是true,就取前面的值,如果前面的表达式为false,就取后面的值。
3、!:逻辑非,取反运算
例题:
console.log(10 && 'js');//js
console.log(0 && 'abc');//0
console.log(10 || 'js');//10
console.log(0 || 'abc');//abc
怎样输出:true和false
console.log(Boolean(0) && Boolean('abc'));
短路问题:输出结果是?
赋值运算符
=,+=,-=,*=,/=,%=
=:赋值
==:比较(等于)
===:比较(全等)
条件运算符(三目运算符)
表达式1?表达式2:表达式3
如果表达式1为真(true),计算表达式2的值,如果为假(false),计算表达式3的值。
等性运算符
Null==undefined;//true
Null===undefined;//false
true == 1;
false ==0;
NaN == NaN;//false
NaN !== NaN;//true
运算符的优先级
隐式类型转换
强制类型转换
Number():转化成数值
只有纯数字的才能转换得到真实数字。
布尔类型转换为Number:true 转换为1、false转换为0。
未定义类型转换为Number:underfind 转换为NaN。
空类型转换为Number:null 转换为0。
String():转化成字符串
Boolean():转化成布尔
总结说明:
1. NaN ,0 ,"", ‘’ ,underfind, null 转换为:false。
2. 正数,负数都是:true
3. 只要不是空字符串都是:true
parseInt():将字符串转化为整数
parseFloat():将字符串转化为浮点数