JavaScript学习笔记(1)
主流浏览器
-
这里再次强调一下主流浏览器,这不是一个程序员的基本素养,而是一个程序员的基础专业知识。
-
要看他是否是主流浏览器主要看两点
-
是否占有一定的市场份额
-
是否有自己独立自主研发的内核
-
主流浏览器
-
IE trident
-
Chrome webkit/blink
-
Firefox Gecko
-
Opera presto
-
Safari webkit
js的引入方式
- 外部引入
在外部在建立一个js文件然后使用script标签的src属性引入即可
- 内部引入
在html页面上写script标签里面写入即可
- 嵌入式
把JavaScript代码当作标签的属性来使用
js的基本语法
-
定义:js是动态型的解释性语言,解释一行执行一行,不用通篇翻译,现翻译就现执行了
-
注意:HTML和CSS都不算是编程语言,编程语言最基本就是要有变量。
下面来解释一下变量
-
JavaScript里面的变量使用关键词var来声明
-
用=来给变量赋值(运算符的优先级要大于赋值符)
-
变量就好比盛水的杯子,变量就是那个杯子,而往杯子里面加水的过程就是赋值的过程,那些水就是变量里面的数据。
变量的命名规则
-
变量名必须以英文字母,下划线,$符号开头
-
变量名必须包括英文字母,下划线,数字,而不能包含其他的字符
-
变量名不可以使用系统的关键字,保留字来命名
数据的类型
原始值
-
包括:Number Boolean String Undefined null
-
Number 数字类型 123
-
Boolean 布尔值类型 就两个值 true / false
-
String 字符串类型 "123" 带引号的
-
Undefined 未定义类型 未定义的值
-
null 表示一种占位 没有具体的意义,表示空
这里引入一个小故事关于布尔的:都知道计算机是基于数字0诞生的八位的01010101组成一个字符,而布尔就发现了其中的规律,并用布尔值里面的true来代表计算机里面的1,false来代表计算机里面的0,为我们以后的发展带来的巨大的方便,为了纪念他,就以他的名字来命名这一类数值。
引用值
-
array(数组)
-
Object(对象)
-
function(函数)
-
date(数据)
-
RegExp(正则)
-
.................
下面先来看两个例子
- 第一个
猜猜看打印出的结果是什么?
- 下一个例子
-
猜一猜arr和arr1的值?注意(里面哪个arr.push()语法含义是往arr里面哪个数组在丢一个数进去)
-
arr和arr1的值都改变了,都变成了1,2。
了解到
-
原始值和引用值在计算机里面储存的位置是不一样的,那么我们就可以索性的知道。
-
原始值存在于栈(stack)
-
可以形象比喻为:往一个有底没盖的容器里面放东西,最先放进去的东西如果第二次再想拿出来的话,肯定是先把它上面的东西先拿出来,所以它是最后出来的。
-
引用值存在于堆(heap)
-
可以形象的比喻为:就好像在储物格里面存放东西,存放都有自己独立的空间谁都不干扰谁。
下面我们再进一步了解一下
- 例子1
猜猜打印出什么结果?
打印出arr1的值为1,2
-
为什么后面的arr1值还是原来哪个arr的值呢?为什么它不是1,3呢?
-
那么我们带着这一串问题再来了解一下堆和栈的区别
-
使用引用值变量时,申请房间号是现在栈里面申请的,然后再把地址链接到堆里对应的数值里面。因为arr =[1,3]就等于向系统重新申请了一个房间,所以他的链接地址改变了。
-
但是arr1链接还是原来的那个arr地址。所以最后总结,堆里面的变量链接的还是栈里面的变量地址。
js语句的基本规则
-
语句后面都要用分号结束,函数,if循环,for循环后面不要加。
-
js语法错误会引发后续代码终止,但不会影响其他的代码块。
-
注:一个HTML页面里面可以放很多个js代码,一个代码块错误不会影响另外一个代码块的运行。
-
写格式要规范 =/+-两边都应该有空格。
运算操作符
+加号
-
作用:运算时是加号,也可以用来作字符串连接作用
-
例子1
结果
例子2
结果
-
为什么++a和a++打印出来的结果是不一样的呢?
-
先说一下a++的含义:
-
在var b = a++;这个式子代表意思是,先把a的值赋给b然后自身a的值再进行a++。
-
再说一下++a的含义:
-
在 var b = ++a;这个式子代表的意思是,先把a++然后再把这个值赋给b。
-减号
作用:运算时是减号
*乘号
作用:运算时是乘号
/除号
作用:运算时是除号 0/0返回NaN,1/0返回infinty无穷的
感谢你的阅读。
可以微信搜索公众号“北杳同学”,关注我噢~里面有全部的前端笔记,还有很多前端的干货!