#javascript特点
js
解释性语言 单线程
sheel
主流浏览器 内核
IE trident
Chrome blink
firefox gecko
opera presto
safari webkit
javascript
字符串比较 ASCLL码
var a = "a" > "b";
a 97 , A 65
逻辑运行符
&& || !
undefined null NaN "" 0 false ==》 false;
&&
var a = 1 && 2 ; a=2;
var a = 1-0 && 2; a =0;
看第一个表达式 为turn 就看下一个 是否为真 ,都是真返回最后一个值
例: var a = 1 +2 && 3 +2 && 5; a=5
有一个为假 ,就返回假的值
例: var a = 1 +2 && 0 && 5; a=0
||
var sum = 0 || 1; =1
遇到 true 就返回,如果没有则返回最后一个 :sum = 0 || false || false; =false
!
取反
window.prompt(' '); 页面输入
parseInt() 转为int
数组
:var arr = [1,2,3,“ss”,nudefined] 什么类型都可以一起放
对象
object
var date{
lastName : "Deng",
age : 18,
}
类型转换
number 转为number 类型
parseInt ==》 整形
字符 * 数字 = 数字
"10" * 10 =100
“字符”+数字+ = 数字字符
“10“ + 10 = 1010
除了加号 是直接在后面加上。其他都是转化为 数字
“"10" /"10" 1
"10" +"10" 1010
函数
function
1.命名函![在这里插入图片描述](https://img-blog.csdnimg.cn/20190902000951887.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDYwMTQxMA==,size_16,color_FFFFFF,t_70)数表达式
var test = function abc(){}
2.匿名函数表达式
var test =function (){}
函数声明:
function test(){}
形参(a,b)
function sum(a,b){
//javascript 默认在形参上面定义了一个类似数组的 arguments【】 装实参
也是获取形参 sum.length`在这里插入代码片`
for(var i = 0;i < arguments.length; i++ ){
console.log(arguments[i]) 实参列表=[1 ,9 6 ]
}
}
sum(1 ,9 ,6);
arguments =(1 ,9 ,6)实参 。这个不像java ,Javascript无论是形参多还是实参多,都不会报错。
**递归 找规律 找出口**
阶乘
function jc(n){
if(n == 1){
return 1;
}
return n*jc(n-1);
}
//递归 斐波那契数列 1 1 2 3 5 8
//fb(n)=fb(n-1)+fb(n-2)
function fb(n){
if(n == 1 || n == 2){
return 1;
}
return fb(n-1)+fb(n-2);
}
作用域:
里面可以访问外面的变量,外面不可以访问里面的。
全局变量
局部变量
1:未经定义就赋值的变量 为全局变量 即window变量
eg: a = 123;
eg: var a = b =123; 这个b是全局变量,a不是。
执行顺序是 b ==》123 ,再var 声明 a =b;
2:一切声明的全局变量都是window属性,
eg:var a=123;===>window.a=123;
**预编译**
ao = 执行期上下文
1:AO
2:找形参和变量声明,作为ao对象,值为undefined
3:将实参和形参统一
4:在函数体找函数声明,值赋予函数体。
未定义的 参数 只有放在typeof(a) 不会报错
<h3>作用域</h3>
每一个javascript函数都是一个对象,对象中有一些属性我们可以访问,有些不行,
【scope】就是不能访问的一个,【scope】就是执行期上下文的集合,AO .GO
一个函数被定义时候就创建了一个scope ,里面有个GO(全局上下文),放在scope集合中的第0位,
但是在执行
这个函数时候,又产生了一个AO (执行期上下文),这时候,AO就存在 scope 的第0位,GO,往后面排。
此时b()函数执行时,也产生了scope ,产生了AO ,此时 B() 函数的AO,是在fs()的AO里面。
funtion fs(){
function b(){
}
}
var a =100;
fs();
立即执行函数
(function(){}())
对象
构造函数 有 new
function Student(){}
var student = new Student();
函数执行 没有new
function student(){}
var student = student();
this原理
1 执行时候 创建一个 this {}
2 赋值 this.xxx = xxx
3 返回 return this
function Person(name,height){
// 创建 this {}
this.name = name;
this.height = height; //赋值 this.xxx= xxx
this.say = function (){
console.log(this.say);
}
// 返回 return this
}
console.log(new Person('老成',180).name)
原形 :没有的属性就去父类里面找
xxx.prototype{}
Person.prototype.lastName = "MrDeng"; //原形 object
function Person(name){
this.name = name;
}
var person = new Person('james');
没有的属性就去父类里面找 : person.lastName = Mrdeng;
![avatar](/G:1567475020(1).jpg)