日期:2014-05-16  浏览次数:20409 次

js这样写会有逻辑问题吗
这样写,感觉会重复调用不执行的代码

search();
function search() {
 var val = $("#searchBox").val();
 $("#searchBtn").click(function(){
     //dosomething
 });
 $("#searchBox").bind('focus',function() {
    //dosomething
 })
}

还是说不应该封装成函数,直接如下这样写,但是这样的变量是全局变量的,怕有所影响

 var val = $("#searchBox").val();
 $("#searchBtn").click(function(){
     //dosomething
 });
 $("#searchBox").bind('focus',function() {
    //dosomething
 })

请问哪种写法的逻辑更好点。
js

------解决方案--------------------
封装成函数可以重复用  不封装即时执行  看你的目的了
------解决方案--------------------
不过你写的这个函数执行一次就多增加一次click和focus,逻辑有问题吧
------解决方案--------------------
要有  init 初始化的概念

//search();    在合适的时候 执行他

$(function(){
var val=null;
window.search = function() {
 val = $("#searchBox").val();
}
function searchBtnclick(){
         //dosomething
}
function searchBoxfocus(){
            //dosomething
}
 $("#searchBtn").click(searchBtnclick);
 $("#searchBox").bind('focus',searchBoxfocus)


});

我感觉 你只是想这样
------解决方案--------------------
把不同的功能块封装到
(function(){
})();
或者
$(function(){
});
封装起来,然后需要抛出的全局方法可以用命名空间。
(function(){
    App.commom.init = function(){
    ...
    }
})();
个人在项目中的一点儿实践