一些该知道的东西
主流浏览器 的 内核
IE 是 trident
Chrome 是 webkit\blink
Firefox 是 Gecko
Opera 是 presto
Safari 是 webkit
如何使用JavaScript?
- 直接使用script标签
- 在script标签里面使用src属性,直接引入外部文件
日常书写文件的时候把结构,行为,样式,相分离
就是HTML,css,JavaScript各写各的文件(web标准)
基本语法
-
定义变量
var,数据类型由赋值的数据决定 -
输出
document.write(a);功能相当于printf -
原始值不可改变 stack (栈)
数值的赋值相当于copy -
引用值 heap(堆)
赋值相当于把地址copy了,直接改变数据 -
在js里面,数组可以相互赋值
-
push相当于在数组中插入数据
扫描二维码关注公众号,回复: 12900530 查看本文章 -
基本规则
- 语句后面要用分号结束,if,函数,for这些不用加分号
- 书写格式要规范,在运算符左右加空格
-
js代码块是互通的
-
用双引号包括的表示字符串,输出都会直接输出
-
以下两种都是打印输出,console是在控制台输出
document.write(“a”);
console.log(“a”);
运算操作符
- “+”
- 数学运算,字符串连接
- 任何数据类型加字符串都等于字符串(字符串连接)
-
赋值的顺序,自右向左,计算的顺序,自左向右
-
比较运算符
字符串比较ascii码值,结果为true或者false -
NaN不等于NaN,NaN即not a number 不是一个数值
-
&& 先看前面的表达式转换为布尔值是否为真,结果为真则继续看第二个,如果只有两个表达式的话,返回第二个表达式的值;当第一个表达式结果为假的时候,就直接返回第一个结果的值,也就是说返回的值是第一个false的或者true
undefined,null,NaN,"",0,false返回的值都为false -
|| 全假才为假,也可以用于写兼容
-
window.prompt(“input”),弹出一个输入框
if (1 > 2) {
document.write("a");
}
1 > 2 && document.write("a");
// 这两种说法表达的结果一样
typeof 类型转换
对象 object
存在属性值和属性名,类似于c语言中的结构体,属性名方便于让我们找到属性值,每一个属性直接用逗号隔开
编程形式的区别:
- 面向过程:c语言,c++
- 面向对象:Java
js既面向对象,也面向语言
typeof
typeof 会返回六个值,分别为number,string,boolean,object,undefinded,function(函数)
对象,数组,NULL,都会返回object
typeof的使用可以加括号也可以空格隔开
console.log(typeof(num));
console.log(typeof num);
类型转换
显示类型转化
- number,就是转换成数,包括true,false,null但是NaN和undefined不会转换
- paresInt,是把里面的数转化为整型,第二个参数radix表示string是多少进制的数,然后把radix进制的数转化成十进制的整数,radix取2~36。从数字位开始看,直到遇到第一个非数字位截止
- parseFloat,转换成浮点型,和paresInt差不多
- toString,和String差不多,但是undefined和null不能用toString,里面的radix是表示将数字转换成其他进制
- String,把数字或其他的类型都转换成字符串
- Boolean,转换成布尔型
隐示类型转化
- isNaN,里面调用number(),判断转换后的数是不是NaN,然后输出true或false
- ++/–/ +/-(一元正负),调用number(),转换后类型肯定是number类型
- 当+(加号)两边存在字符串的时候,就会转换成string
- -*/%,转换成number
- && || !,调用Boolean
- < > <= >=,有数字就会转换成数字,然后进行比较,输出Boolean
- == !=,调用Boolean
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXm2iQyS-1616334655302)(3.png)]
undefined == null 是true
-
不发生类型转换的有绝对等于和绝对不等于
三个等号表示绝对等于,一个叹号+两个等号表示绝对不等于 -
只有一种情况在未定义的情况下不报错,就是这种情况
console.log(typeof(a));
这种情况下返回的是字符串undefined,如果再套一个undefined,会返回string
- typeof()返回的是字符串类型
var a = "123abc";
alert(typeof( !!a ));
输出结果是Boolean
- toFixed(5),表示保留5位小数,会进行四舍五入
函数
高内聚,弱偶合
使用函数,需要在前面声明是function
例
function test(){
document.write("hello world!");
}
- 小驼峰命名法:第一个单词首字母小写,剩下单词的首字母大写(其他命名后续补充吧)
document.write(test);打印函数名会输出整个函数,包括函数内容
定义函数的方式
// 第一种:函数声明
function test(){
document.write("hello world!");
}
// 第二种:命名表达式,里面的abc其实没什么用,是未定义的
var test = function abc() {
document.write("a");
}
// 第二种里面test.name存在,为abc
// 第三种:匿名函数表达式(就是指函数表达式)
var demo = function () {
document.write("a");
}
// 第三种里面的demo.name也存在,是demo
参数
- 形参:函数声明的时候,在括号里面的用于站位的叫形参,就想里面的a,b
function add(a, b){
var c = a + b;
document.write(c);
}
add(2,3);
- 实参,add里面的2,3
形参可以比实参多,实参也可以比形参多
每一个函数里面都有一个隐式的数组,用来存放当实参比形参多的时候多出来的内容,就是arguments
函数还有一个属性,就是函数名也是一个数组,用来存放形参
- 形参和arguments是两个变量,但他们之间存在映射关系,是始终一一对应的
- 实参列表在最开始有几个就会有几个,后续在函数内部不会改变arguments的内容