JavaScript中同名标识符优先级
2012-05-14 09:24
204 查看
一,局部变量先使用后声明,不影响外部同名变量
第一点,函数fn内第一句输出x,x是在第二句才定义的。这在JS中是允许的,这里的允许是指不会出现语法错误程序可以运行。
但在其它语言如C,Java中却是不允许的。变量必须先声明后使用,如
Java中编译器会提示错误,程序无法运行。
第二点,函数fn内的局部变量x不会影响到外部的变量x。即fn内alert输出不是1,而是undefined。
二,形参优先级高于函数名
可以看到函数名和形参同名都是fn,输出的是字符串"hello",却不是函数fn的函数体(fn.toString())。
三,形参优先级高于arguments
arguments对象可以直接在函数内使用,是语言本身提供的一个 特殊标识符 。
这里刚好将形参声明成与其同名。输出可以看到是"hello"而非"[object Object]",即形参arguments覆盖了语言本身提供的真正的arguments。
四,形参优先级高于只声明却未赋值的局部变量
函数fn形参为a,函数内第一句仅声明局部变量a,却并未赋值。从输出结果是"hello"而非undefined可以看出形参a优先级高于仅声明却未赋值的局部变量a。
五,声明且赋值的局部变量优先级高于形参
函数fn形参为a,函数内第一句仅声明局部变量a,赋值为1。从输出结果是"1"而非"hello"可以看出声明且赋值的局部变量a优先级高于形参a。
六,形参赋值给同名局部变量时
但在其它语言如C,Java中却是不允许的。变量必须先声明后使用,如
第二点,函数fn内的局部变量x不会影响到外部的变量x。即fn内alert输出不是1,而是undefined。
二,形参优先级高于函数名
三,形参优先级高于arguments
这里刚好将形参声明成与其同名。输出可以看到是"hello"而非"[object Object]",即形参arguments覆盖了语言本身提供的真正的arguments。
四,形参优先级高于只声明却未赋值的局部变量
五,声明且赋值的局部变量优先级高于形参
六,形参赋值给同名局部变量时
相关文章推荐
- 【js】JavaScript中同名标识符优先级
- 浅析JavaScript中的同名标识符优先级
- JavaScript中同名标识符优先级
- 浅析JavaScript中的同名标识符优先级
- JavaScript中同名标识符优先级详解
- JavaScript中同名标识符优先级
- javascript中运算符有哪些? 他们的优先级 呢?
- PHP 与 JavaScript 的运算符优先级差异
- JAVA中的标识符、变量、关键字、变量、常量、运算符、优先级
- JavaScript 中 当用live绑定多个同名事件时,如何移除事件。
- JavaScript var声明变量和直接用标识符初始化的细节
- javascript运算符的优先级
- c#中为什么能创建同名线程,同名线程如何区分呢,比如设置两个同名线程为不同优先级
- 【JavaScript的标识符】
- JavaScript中模拟实现类似于Java的super关键字调用父类中同名方法
- 【Javascript】保持先后顺序(操作符优先级)
- Javascript算符的优先级介绍
- JavaScript运算符优先级引起的bug
- js笔记2之JavaScript标识符、数据类型及其转换
- JavaScript数据结构与算法(三) 优先级队列的实现