JavaScrit全面总结

前端技术的发展变化太快了,各种各样的框架。再变也离不开js。所以,在此把js的高级语法总结一遍。    js解析和执行包括:全局和函数

一:全局预处理

<script type="text/javascript">
var a=1;
function xx(){
alert(a);
}
</script>

  这段代码会正常输出a=1;

<script type="text/javascript">
var a=1;
function xx(){
alert(a);
var a=5;
}
</script>

输出 undefined   为什么呢?  不报错  输出undefined 。   这就是js的解析执行过程

js执行过程分为:预处理的阶段和执行阶段  

预处理阶段:

一:创建一个词法环境  LexicalEnvironment==window

二:扫面js代码:

1.用声明的方法创建的函数

2.用var   定义的变量

预处理js处理命名冲突:

先扫描函数声明后扫描变量(var声明)

处理函数声明有冲突会覆盖

处理变量声明有冲突,会忽略

下面为例子:

 <script type="text/javascript">
alert(a);    //undefined
alert(b);  //报错
alert(f);  //字符串的表达式
alert(g);   //undefined

var a=5;
b=6;
alert(b);
function f(){

	console.log(‘f‘);
}

//表达式创建的函数
var g=function(){
console.log(‘g‘);

}
alert(g);
 </script>

js分为两个阶段:
一:预处理阶段  1.var  定义的变量   2.声明的方式创建的函数

window
{
   f:指向函数
   a:undefined
   g:undefined    (表达式创建的函数可以当成变量)

}

二:执行时    没有定义var  就一次性赋值
window
{
    f:输出函数的值
    a:5  变量的定义
    b: 6  函数赋值
    g:指向函数

}

  函数:

时间: 2024-10-04 19:13:16

JavaScrit全面总结的相关文章

两个大数相加 ----Javascrit 实现

(function(){ var addLarge = function(n1,n2){ var over = 0; var ret = ""; var len = Math.min(n1.length,n2.length); var sln1 = n1.substr(n1.length - len,n1.length ); var sln2 = n2.substr(n2.length - len,n2.length ); for(var i = len;i > 0; i--)

javascrit数组对象

javascrit数组对象 一.属性 1.length 设置或返回数组元素的数目. 2.constructor 返回构造函数的引用 二.方法 A.删除或添加类 1. 数组对象.push(数组元素......) 向数组的末尾添加新的元素,返回值是新数组的长度.可以一次添加多个元素 2. 数组对象.unshift(数组元素.....) 向数组的开头加入新的元素,返回值是新数组的长度.可以一次添加多个元素 3. 数组对象.pop() 删除数组的最后一个元素,返回删除的元素 4. 数组对象.shift(

javascrit开发的基本代码结构的

今天看到群里一个demo,简单看了一下. 然后自己就写了一个通用的javascrit开发的基本代码结构的js文件.代码如下: (function($,win){ //定义全局变量对象 var obj={ }; //定义函数.方法等对象 var fn={ goTo5itbao:function(){ win.location.href='http://www.5itbao.cn'; } }; //自动执行的匿名函数,效果等同于下面的几种写法 (function(){ fn.goTo5itbao.c

Javascrit 总结

1. 数组三种表达方法 第一种 var arr = new Array(1,2,3); document.writeln(arr+"<br/>"); 第二种 var arr1 = [23,34, 56,34,235]; document.writeln(arr1+"<br/>"); 第三种 var arr2 = new Array(); arr2[0] = 234; arr2[1] = 345; document.write(arr2) 2.

javascrit中“字符串为什么可以调用成员”

<script> var title = "this is title"; console.log(title.substr(0,5));   //字符串为什么可以调用成员(惯例是对象才能调用成员) //答:表面是字符串调用成员,其实在浏览器javascript解释引擎内部要做具体处理 引擎根据"字符串"生成一个"临时对象",是临时对象调用成员并返回结果 之后该"临时对象"被销毁 </script>

javascrit

function wm(){     window.open("打开文件位置/打开文件")           .close();           .moveTo(10,0);           .resizeBy(10,5);/一依次调整当前窗口的尺寸/           .resizeTo();/移至/           alert("高"+window.screen.availHeight+"宽"+window.screen.av

javascrit等号的转换和相等性

由于javascript可以做灵活的类型转换,因此其"=="相等运算符也随相等的含义灵活多变.例如,如下这些比较结果均是true null==undefined //这两个值被认为相等 "0"==0 //在比较值钱字符串转换成数字 0==false //在比较值钱布尔值转换成数字 "0"==false //在比较值钱字符串和布尔值都转换成数字

javascrit字符串截取

昨天遇见一个问题就是一个地址后面加参数第一次是需要添加参数,以后每次点击按钮的时候是替换如果不进行处理的话如果页面不刷新,地址会不断的添加越来越长,所以就想了一个办法就是把地址截取一下每次都在截取的字符串的基础上添加

Android WebView 开发教程

1.WebView的使用 (a). 创建WebView的实例加入到Activity中 WebView webview = new WebView(this); setContentView(webview); 或者在xml中配置WebView <Webview android:layout_width="match_parent" android:layout_height="match_parent" > </Webview> (b). 访